/**
 */
package org.mro.grib.model.files.secondEdition.products.impl;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.impl.EPackageImpl;

import org.mro.grib.model.files.firstEdition.FirstEditionPackage;

import org.mro.grib.model.files.firstEdition.grids.GridsPackage;

import org.mro.grib.model.files.firstEdition.grids.impl.GridsPackageImpl;

import org.mro.grib.model.files.firstEdition.impl.FirstEditionPackageImpl;

import org.mro.grib.model.files.firstEdition.sections.SectionsPackage;

import org.mro.grib.model.files.firstEdition.sections.impl.SectionsPackageImpl;

import org.mro.grib.model.files.secondEdition.SecondEditionPackage;

import org.mro.grib.model.files.secondEdition.dataRepresentations.DataRepresentationsPackage;

import org.mro.grib.model.files.secondEdition.dataRepresentations.impl.DataRepresentationsPackageImpl;

import org.mro.grib.model.files.secondEdition.impl.SecondEditionPackageImpl;

import org.mro.grib.model.files.secondEdition.products.IProductDefinition;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate40;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate41;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate410;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate41000;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate41001;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate41002;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate411;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate41100;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate41101;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate412;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate413;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate414;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate415;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate42;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate420;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate4254;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate43;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate430;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate431;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate432;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate44;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate440;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate441;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate442;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate443;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate444;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate445;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate446;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate447;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate448;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate45;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate451;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate46;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate47;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate48;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate49;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplate491;
import org.mro.grib.model.files.secondEdition.products.ProductDefinitionTemplateNumber;
import org.mro.grib.model.files.secondEdition.products.ProductsFactory;
import org.mro.grib.model.files.secondEdition.products.ProductsPackage;
import org.mro.grib.model.files.secondEdition.products.meteorological.MeteorologicalPackage;
import org.mro.grib.model.files.secondEdition.products.meteorological.impl.MeteorologicalPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class ProductsPackageImpl extends EPackageImpl implements ProductsPackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass iProductDefinitionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate40EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate41EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate42EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate43EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate44EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate45EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate46EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate47EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate48EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate49EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate410EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate411EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate412EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate413EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate414EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate415EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate420EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate430EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate431EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate432EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate440EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate441EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate442EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate443EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate444EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate445EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate446EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate447EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate448EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate451EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate491EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate4254EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate41000EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate41001EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate41002EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate41100EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass productDefinitionTemplate41101EClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum productDefinitionTemplateNumberEEnum = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see org.mro.grib.model.files.secondEdition.products.ProductsPackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private ProductsPackageImpl() {
		super(eNS_URI, ProductsFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link ProductsPackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static ProductsPackage init() {
		if (isInited) return (ProductsPackage)EPackage.Registry.INSTANCE.getEPackage(ProductsPackage.eNS_URI);

		// Obtain or create and register package
		ProductsPackageImpl theProductsPackage = (ProductsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ProductsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ProductsPackageImpl());

		isInited = true;

		// Obtain or create and register interdependencies
		FirstEditionPackageImpl theFirstEditionPackage = (FirstEditionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(FirstEditionPackage.eNS_URI) instanceof FirstEditionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(FirstEditionPackage.eNS_URI) : FirstEditionPackage.eINSTANCE);
		GridsPackageImpl theGridsPackage = (GridsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(GridsPackage.eNS_URI) instanceof GridsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(GridsPackage.eNS_URI) : GridsPackage.eINSTANCE);
		SectionsPackageImpl theSectionsPackage = (SectionsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SectionsPackage.eNS_URI) instanceof SectionsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SectionsPackage.eNS_URI) : SectionsPackage.eINSTANCE);
		SecondEditionPackageImpl theSecondEditionPackage = (SecondEditionPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SecondEditionPackage.eNS_URI) instanceof SecondEditionPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SecondEditionPackage.eNS_URI) : SecondEditionPackage.eINSTANCE);
		org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl theGridsPackage_1 = (org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.grids.GridsPackage.eNS_URI) instanceof org.mro.grib.model.files.secondEdition.grids.impl.GridsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.grids.GridsPackage.eNS_URI) : org.mro.grib.model.files.secondEdition.grids.GridsPackage.eINSTANCE);
		org.mro.grib.model.files.secondEdition.sections.impl.SectionsPackageImpl theSectionsPackage_1 = (org.mro.grib.model.files.secondEdition.sections.impl.SectionsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.sections.SectionsPackage.eNS_URI) instanceof org.mro.grib.model.files.secondEdition.sections.impl.SectionsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(org.mro.grib.model.files.secondEdition.sections.SectionsPackage.eNS_URI) : org.mro.grib.model.files.secondEdition.sections.SectionsPackage.eINSTANCE);
		MeteorologicalPackageImpl theMeteorologicalPackage = (MeteorologicalPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(MeteorologicalPackage.eNS_URI) instanceof MeteorologicalPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(MeteorologicalPackage.eNS_URI) : MeteorologicalPackage.eINSTANCE);
		DataRepresentationsPackageImpl theDataRepresentationsPackage = (DataRepresentationsPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(DataRepresentationsPackage.eNS_URI) instanceof DataRepresentationsPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(DataRepresentationsPackage.eNS_URI) : DataRepresentationsPackage.eINSTANCE);

		// Create package meta-data objects
		theProductsPackage.createPackageContents();
		theFirstEditionPackage.createPackageContents();
		theGridsPackage.createPackageContents();
		theSectionsPackage.createPackageContents();
		theSecondEditionPackage.createPackageContents();
		theGridsPackage_1.createPackageContents();
		theSectionsPackage_1.createPackageContents();
		theMeteorologicalPackage.createPackageContents();
		theDataRepresentationsPackage.createPackageContents();

		// Initialize created meta-data
		theProductsPackage.initializePackageContents();
		theFirstEditionPackage.initializePackageContents();
		theGridsPackage.initializePackageContents();
		theSectionsPackage.initializePackageContents();
		theSecondEditionPackage.initializePackageContents();
		theGridsPackage_1.initializePackageContents();
		theSectionsPackage_1.initializePackageContents();
		theMeteorologicalPackage.initializePackageContents();
		theDataRepresentationsPackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theProductsPackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(ProductsPackage.eNS_URI, theProductsPackage);
		return theProductsPackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getIProductDefinition() {
		return iProductDefinitionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate40() {
		return productDefinitionTemplate40EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_ParameterCategory() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_ParameterNumber() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_TypeOfGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_BackgroundGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_AnalysisOrForecastGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_HoursOfObservationalDataCutOff() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_MinutesOfObservationalDataCutOff() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_IndicatorOfUnitOfTimeRange() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_ForecastTime() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_TypeOfFirstFixedSurface() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_ScaleFactorOfFirstFixedSurface() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_ScaledValueOfFirstFixedSurface() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_TypeOfSecondFixedSurface() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_ScaleFactorOfSecondFixedSurface() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate40_ScaledValueOfSecondFixedSurface() {
		return (EAttribute)productDefinitionTemplate40EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate41() {
		return productDefinitionTemplate41EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41_TypeOfEnsembleForecast() {
		return (EAttribute)productDefinitionTemplate41EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41_PerturbationNumber() {
		return (EAttribute)productDefinitionTemplate41EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41_NumberOfForecastsInEnsemble() {
		return (EAttribute)productDefinitionTemplate41EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate42() {
		return productDefinitionTemplate42EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate42_DerivedForecast() {
		return (EAttribute)productDefinitionTemplate42EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate42_NumberOfForecastsInEnsemble() {
		return (EAttribute)productDefinitionTemplate42EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate43() {
		return productDefinitionTemplate43EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_ClusterIdentifier() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_NumberOfClusterHighResolution() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_NumberOfClusterLowResolution() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_TotalNumberOfClusters() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_ClusteringMethod() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_NorthernLatitudeOfClusterDomain() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_SouthernLatitudeOfClusterDomain() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_EasternLatitudeOfClusterDomain() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_WesternLatitudeOfClusterDomain() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_NumberOfForecastsInTheCluster() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_ScaleFactorOfStandardDeviationInTheCluster() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_ScaledValueOfStandardDeviationInTheCluster() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_ScaleFactorOfDistanceOfTheClusterFromEnsembleMean() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_ScaledValueOfDistanceOfTheClusterFromEnsembleMean() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate43_EnsembleForecastNumbersOffset() {
		return (EAttribute)productDefinitionTemplate43EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate44() {
		return productDefinitionTemplate44EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_ClusterIdentifier() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_NumberOfClusterHighResolution() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_NumberOfClusterLowResolution() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_TotalNumberOfClusters() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_ClusteringMethod() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_LatitudeOfCentralPointInClusterDomain() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_LongitudeOfCentralPointInClusterDomain() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_RadiusOfClusterDomain() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_NumberOfForecastsInTheCluster() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_ScaleFactorOfStandardDeviationInTheCluster() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_ScaledValueOfStandardDeviationInTheCluster() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_ScaleFactorOfDistanceOfTheClusterFromEnsembleMean() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_ScaledValueOfDistanceOfTheClusterFromEnsembleMean() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate44_EnsembleForecastNumbersOffset() {
		return (EAttribute)productDefinitionTemplate44EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate45() {
		return productDefinitionTemplate45EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate45_ForecastProbabilityNumber() {
		return (EAttribute)productDefinitionTemplate45EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate45_TotalNumberOfForecastProbabilities() {
		return (EAttribute)productDefinitionTemplate45EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate45_ProbabilityType() {
		return (EAttribute)productDefinitionTemplate45EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate45_ScaleFactorOfLowerLimit() {
		return (EAttribute)productDefinitionTemplate45EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate45_ScaledValueOfLowerLimit() {
		return (EAttribute)productDefinitionTemplate45EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate45_ScaleFactorOfUpperLimit() {
		return (EAttribute)productDefinitionTemplate45EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate45_ScaledValueOfUpperLimit() {
		return (EAttribute)productDefinitionTemplate45EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate46() {
		return productDefinitionTemplate46EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate46_PercentileValue() {
		return (EAttribute)productDefinitionTemplate46EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate47() {
		return productDefinitionTemplate47EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate48() {
		return productDefinitionTemplate48EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_Year() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_Month() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_Day() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_Hour() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_Minute() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_Second() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_NumberOfTimeRangeSpecifications() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_OutermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_OutermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_OutermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_OutermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_OutermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_OutermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_AdditionalStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_AdditionalTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_AdditionalIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_AdditionalLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_AdditionalIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate48_AdditionalTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate48EClass.getEStructuralFeatures().get(19);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate49() {
		return productDefinitionTemplate49EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_Year() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_Month() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_Day() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_Hour() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_Minute() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_Second() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_NumberOfTimeRangeSpecifications() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_OutermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_OutermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_OutermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_OutermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_OutermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_OutermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_InnermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_InnermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_InnermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_InnermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_InnermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_InnermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(19);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_AdditionalStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(20);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_AdditionalTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(21);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_AdditionalIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(22);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_AdditionalLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(23);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_AdditionalIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(24);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate49_AdditionalTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate49EClass.getEStructuralFeatures().get(25);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate410() {
		return productDefinitionTemplate410EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_Year() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_Month() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_Day() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_Hour() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_Minute() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_Second() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_NumberOfTimeRangeSpecifications() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_OutermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_OutermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_OutermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_OutermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_OutermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_OutermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_AdditionalStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_AdditionalTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_AdditionalIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_AdditionalLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_AdditionalIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate410_AdditionalTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate410EClass.getEStructuralFeatures().get(19);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate411() {
		return productDefinitionTemplate411EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_Year() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_Month() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_Day() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_Hour() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_Minute() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_Second() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_NumberOfTimeRangeSpecifications() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_OutermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_OutermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_OutermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_OutermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_OutermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_OutermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_AdditionalStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_AdditionalTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_AdditionalIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_AdditionalLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_AdditionalIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate411_AdditionalTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate411EClass.getEStructuralFeatures().get(19);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate412() {
		return productDefinitionTemplate412EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_Year() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_Month() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_Day() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_Hour() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_Minute() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_Second() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_NumberOfTimeRangeSpecifications() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_OutermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_OutermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_OutermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_OutermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_OutermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_OutermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_AdditionalStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_AdditionalTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_AdditionalIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_AdditionalLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_AdditionalIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate412_AdditionalTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate412EClass.getEStructuralFeatures().get(19);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate413() {
		return productDefinitionTemplate413EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_Year() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_Month() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_Day() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_Hour() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_Minute() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_Second() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_NumberOfTimeRangeSpecifications() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_OutermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_OutermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_OutermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_OutermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_OutermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_OutermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_AdditionalStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_AdditionalTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_AdditionalIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_AdditionalLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_AdditionalIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate413_AdditionalTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate413EClass.getEStructuralFeatures().get(19);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate414() {
		return productDefinitionTemplate414EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_Year() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_Month() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_Day() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_Hour() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_Minute() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_Second() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_NumberOfTimeRangeSpecifications() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_OutermostStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_OutermostTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_OutermostIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_OutermostLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_OutermostIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_OutermostTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_AdditionalStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_AdditionalTypeOfTimeIncrement() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_AdditionalIndicatorOfUnitOfTimeStatisticalProcess() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_AdditionalLengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_AdditionalIndicatorOfUnitOfTimeSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate414_AdditionalTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate414EClass.getEStructuralFeatures().get(19);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate415() {
		return productDefinitionTemplate415EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate415_StatisticalProcess() {
		return (EAttribute)productDefinitionTemplate415EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate415_TypeOfSpatialProcessing() {
		return (EAttribute)productDefinitionTemplate415EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate415_NumberOfDataPoints() {
		return (EAttribute)productDefinitionTemplate415EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate420() {
		return productDefinitionTemplate420EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_ParameterCategory() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_ParameterNumber() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_TypeOfGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_NumberOfRadarSites() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_UnitOfTimeRange() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_SiteLatitude() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_SiteLongitude() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_SiteElevation() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_AlphanumericSiteID() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_NumericSiteID() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_OperatingMode() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_ReflectivityCalibrationConstant() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(11);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_QualityControlIndicator() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(12);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_ClutterFilterIndicator() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(13);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_ConstantAntennaElevationAngle() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(14);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_AccumulationInterval() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(15);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_ReferenceReflectivity() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(16);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_RangeBinSpacing() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(17);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate420_RadialAngularSpacing() {
		return (EAttribute)productDefinitionTemplate420EClass.getEStructuralFeatures().get(18);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate430() {
		return productDefinitionTemplate430EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate430_ParameterCategory() {
		return (EAttribute)productDefinitionTemplate430EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate430_ParameterNumber() {
		return (EAttribute)productDefinitionTemplate430EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate430_TypeOfGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate430EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate430_ObservationGeneratingProcessIdentifier() {
		return (EAttribute)productDefinitionTemplate430EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate430_NumberOfContributingSpectralBands() {
		return (EAttribute)productDefinitionTemplate430EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate430_ContributingBandOffsets() {
		return (EAttribute)productDefinitionTemplate430EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate431() {
		return productDefinitionTemplate431EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate432() {
		return productDefinitionTemplate432EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate432_AnalysisOrForecastGeneratingProcessIdentifier() {
		return (EAttribute)productDefinitionTemplate432EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate432_HoursOfObservationalData() {
		return (EAttribute)productDefinitionTemplate432EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate432_MinutesOfObservationalData() {
		return (EAttribute)productDefinitionTemplate432EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate432_IndicatorOfUnitOfTimeRange() {
		return (EAttribute)productDefinitionTemplate432EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate432_ForecastTime() {
		return (EAttribute)productDefinitionTemplate432EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate440() {
		return productDefinitionTemplate440EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate440_AtmosphericChemicalConstituentType() {
		return (EAttribute)productDefinitionTemplate440EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate441() {
		return productDefinitionTemplate441EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate441_AtmosphericChemicalConstituentType() {
		return (EAttribute)productDefinitionTemplate441EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate442() {
		return productDefinitionTemplate442EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate442_AtmosphericChemicalConstituentType() {
		return (EAttribute)productDefinitionTemplate442EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate443() {
		return productDefinitionTemplate443EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate443_AtmosphericChemicalConstituentType() {
		return (EAttribute)productDefinitionTemplate443EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate444() {
		return productDefinitionTemplate444EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate444_AerosolType() {
		return (EAttribute)productDefinitionTemplate444EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate444_TypeOfIntervalForFirstAndSecondSizes() {
		return (EAttribute)productDefinitionTemplate444EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate444_ScaleFactorOfFirstSize() {
		return (EAttribute)productDefinitionTemplate444EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate444_ScaledValueOfFirstSize() {
		return (EAttribute)productDefinitionTemplate444EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate444_ScaleFactorOfSecondSize() {
		return (EAttribute)productDefinitionTemplate444EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate444_ScaledValueOfSecondSize() {
		return (EAttribute)productDefinitionTemplate444EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate445() {
		return productDefinitionTemplate445EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate445_AerosolType() {
		return (EAttribute)productDefinitionTemplate445EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate445_TypeOfIntervalForFirstAndSecondSizes() {
		return (EAttribute)productDefinitionTemplate445EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate445_ScaleFactorOfFirstSize() {
		return (EAttribute)productDefinitionTemplate445EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate445_ScaledValueOfFirstSize() {
		return (EAttribute)productDefinitionTemplate445EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate445_ScaleFactorOfSecondSize() {
		return (EAttribute)productDefinitionTemplate445EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate445_ScaledValueOfSecondSize() {
		return (EAttribute)productDefinitionTemplate445EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate446() {
		return productDefinitionTemplate446EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate446_AerosolType() {
		return (EAttribute)productDefinitionTemplate446EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate446_TypeOfIntervalForFirstAndSecondSizes() {
		return (EAttribute)productDefinitionTemplate446EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate446_ScaleFactorOfFirstSize() {
		return (EAttribute)productDefinitionTemplate446EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate446_ScaledValueOfFirstSize() {
		return (EAttribute)productDefinitionTemplate446EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate446_ScaleFactorOfSecondSize() {
		return (EAttribute)productDefinitionTemplate446EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate446_ScaledValueOfSecondSize() {
		return (EAttribute)productDefinitionTemplate446EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate447() {
		return productDefinitionTemplate447EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate447_AerosolType() {
		return (EAttribute)productDefinitionTemplate447EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate447_TypeOfIntervalForFirstAndSecondSizes() {
		return (EAttribute)productDefinitionTemplate447EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate447_ScaleFactorOfFirstSize() {
		return (EAttribute)productDefinitionTemplate447EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate447_ScaledValueOfFirstSize() {
		return (EAttribute)productDefinitionTemplate447EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate447_ScaleFactorOfSecondSize() {
		return (EAttribute)productDefinitionTemplate447EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate447_ScaledValueOfSecondSize() {
		return (EAttribute)productDefinitionTemplate447EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate448() {
		return productDefinitionTemplate448EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_AerosolType() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_TypeOfIntervalForFirstAndSecondSize() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaleFactorOfFirstSize() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaledValueOfFirstSize() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaleFactorOfSecondSize() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaledValueOfSecondSize() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_TypeOfIntervalForFirstAndSecondWavelength() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaleFactorOfFirstWavelength() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaledValueOfFirstWavelength() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaleFactorOfSecondWavelength() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(9);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate448_ScaledValueOfSecondWavelength() {
		return (EAttribute)productDefinitionTemplate448EClass.getEStructuralFeatures().get(10);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate451() {
		return productDefinitionTemplate451EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate451_NumberOfCategories() {
		return (EAttribute)productDefinitionTemplate451EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate451_CategoriesOffsets() {
		return (EAttribute)productDefinitionTemplate451EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate491() {
		return productDefinitionTemplate491EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate4254() {
		return productDefinitionTemplate4254EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate4254_ParameterCategory() {
		return (EAttribute)productDefinitionTemplate4254EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate4254_ParameterNumber() {
		return (EAttribute)productDefinitionTemplate4254EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate4254_NumberOfCharacters() {
		return (EAttribute)productDefinitionTemplate4254EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate41000() {
		return productDefinitionTemplate41000EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_ParameterCategory() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_ParameterNumber() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_TypeOfGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_BackgroundGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_AnalysisOrForecastGeneratingProcess() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_HoursOfObservationalDataCutOff() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_MinutesOfObservationalDataCutOff() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_IndicatorOfUnitOfTimeRange() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(7);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41000_ForecastTime() {
		return (EAttribute)productDefinitionTemplate41000EClass.getEStructuralFeatures().get(8);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate41001() {
		return productDefinitionTemplate41001EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41001_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate41001EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41001_StatisticalProcess() {
		return (EAttribute)productDefinitionTemplate41001EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41001_TypeOfTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate41001EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41001_IndicatorOfUnitOfTimeForTimeRange() {
		return (EAttribute)productDefinitionTemplate41001EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41001_LengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate41001EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41001_IndicatorOfUnitOfTimeForIncrement() {
		return (EAttribute)productDefinitionTemplate41001EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41001_TimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate41001EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate41002() {
		return productDefinitionTemplate41002EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41002_HorizontalDimensionProcessed() {
		return (EAttribute)productDefinitionTemplate41002EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41002_TreatmentOfMissingData() {
		return (EAttribute)productDefinitionTemplate41002EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41002_TypeOfStatisticalProcessing() {
		return (EAttribute)productDefinitionTemplate41002EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41002_StartOfRange() {
		return (EAttribute)productDefinitionTemplate41002EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41002_EndOfRange() {
		return (EAttribute)productDefinitionTemplate41002EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41002_NumberOfValues() {
		return (EAttribute)productDefinitionTemplate41002EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate41100() {
		return productDefinitionTemplate41100EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getProductDefinitionTemplate41101() {
		return productDefinitionTemplate41101EClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41101_TotalNumberOfDataValuesMissing() {
		return (EAttribute)productDefinitionTemplate41101EClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41101_StatisticalProcess() {
		return (EAttribute)productDefinitionTemplate41101EClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41101_TypeOfTimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate41101EClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41101_IndicatorOfUnitOfTimeForTimeRange() {
		return (EAttribute)productDefinitionTemplate41101EClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41101_LengthOfTheTimeRange() {
		return (EAttribute)productDefinitionTemplate41101EClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41101_IndicatorOfUnitOfTimeForIncrement() {
		return (EAttribute)productDefinitionTemplate41101EClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getProductDefinitionTemplate41101_TimeIncrementBetweenSuccessiveFields() {
		return (EAttribute)productDefinitionTemplate41101EClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getProductDefinitionTemplateNumber() {
		return productDefinitionTemplateNumberEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ProductsFactory getProductsFactory() {
		return (ProductsFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		iProductDefinitionEClass = createEClass(IPRODUCT_DEFINITION);

		productDefinitionTemplate40EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE40);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__PARAMETER_CATEGORY);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__PARAMETER_NUMBER);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__TYPE_OF_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__BACKGROUND_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__ANALYSIS_OR_FORECAST_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__HOURS_OF_OBSERVATIONAL_DATA_CUT_OFF);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__MINUTES_OF_OBSERVATIONAL_DATA_CUT_OFF);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__INDICATOR_OF_UNIT_OF_TIME_RANGE);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__FORECAST_TIME);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__TYPE_OF_FIRST_FIXED_SURFACE);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__SCALE_FACTOR_OF_FIRST_FIXED_SURFACE);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__SCALED_VALUE_OF_FIRST_FIXED_SURFACE);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__TYPE_OF_SECOND_FIXED_SURFACE);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__SCALE_FACTOR_OF_SECOND_FIXED_SURFACE);
		createEAttribute(productDefinitionTemplate40EClass, PRODUCT_DEFINITION_TEMPLATE40__SCALED_VALUE_OF_SECOND_FIXED_SURFACE);

		productDefinitionTemplate41EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE41);
		createEAttribute(productDefinitionTemplate41EClass, PRODUCT_DEFINITION_TEMPLATE41__TYPE_OF_ENSEMBLE_FORECAST);
		createEAttribute(productDefinitionTemplate41EClass, PRODUCT_DEFINITION_TEMPLATE41__PERTURBATION_NUMBER);
		createEAttribute(productDefinitionTemplate41EClass, PRODUCT_DEFINITION_TEMPLATE41__NUMBER_OF_FORECASTS_IN_ENSEMBLE);

		productDefinitionTemplate42EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE42);
		createEAttribute(productDefinitionTemplate42EClass, PRODUCT_DEFINITION_TEMPLATE42__DERIVED_FORECAST);
		createEAttribute(productDefinitionTemplate42EClass, PRODUCT_DEFINITION_TEMPLATE42__NUMBER_OF_FORECASTS_IN_ENSEMBLE);

		productDefinitionTemplate43EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE43);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__CLUSTER_IDENTIFIER);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__NUMBER_OF_CLUSTER_HIGH_RESOLUTION);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__NUMBER_OF_CLUSTER_LOW_RESOLUTION);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__TOTAL_NUMBER_OF_CLUSTERS);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__CLUSTERING_METHOD);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__NORTHERN_LATITUDE_OF_CLUSTER_DOMAIN);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__SOUTHERN_LATITUDE_OF_CLUSTER_DOMAIN);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__EASTERN_LATITUDE_OF_CLUSTER_DOMAIN);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__WESTERN_LATITUDE_OF_CLUSTER_DOMAIN);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__NUMBER_OF_FORECASTS_IN_THE_CLUSTER);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__SCALE_FACTOR_OF_STANDARD_DEVIATION_IN_THE_CLUSTER);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__SCALED_VALUE_OF_STANDARD_DEVIATION_IN_THE_CLUSTER);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__SCALE_FACTOR_OF_DISTANCE_OF_THE_CLUSTER_FROM_ENSEMBLE_MEAN);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__SCALED_VALUE_OF_DISTANCE_OF_THE_CLUSTER_FROM_ENSEMBLE_MEAN);
		createEAttribute(productDefinitionTemplate43EClass, PRODUCT_DEFINITION_TEMPLATE43__ENSEMBLE_FORECAST_NUMBERS_OFFSET);

		productDefinitionTemplate44EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE44);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__CLUSTER_IDENTIFIER);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__NUMBER_OF_CLUSTER_HIGH_RESOLUTION);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__NUMBER_OF_CLUSTER_LOW_RESOLUTION);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__TOTAL_NUMBER_OF_CLUSTERS);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__CLUSTERING_METHOD);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__LATITUDE_OF_CENTRAL_POINT_IN_CLUSTER_DOMAIN);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__LONGITUDE_OF_CENTRAL_POINT_IN_CLUSTER_DOMAIN);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__RADIUS_OF_CLUSTER_DOMAIN);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__NUMBER_OF_FORECASTS_IN_THE_CLUSTER);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__SCALE_FACTOR_OF_STANDARD_DEVIATION_IN_THE_CLUSTER);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__SCALED_VALUE_OF_STANDARD_DEVIATION_IN_THE_CLUSTER);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__SCALE_FACTOR_OF_DISTANCE_OF_THE_CLUSTER_FROM_ENSEMBLE_MEAN);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__SCALED_VALUE_OF_DISTANCE_OF_THE_CLUSTER_FROM_ENSEMBLE_MEAN);
		createEAttribute(productDefinitionTemplate44EClass, PRODUCT_DEFINITION_TEMPLATE44__ENSEMBLE_FORECAST_NUMBERS_OFFSET);

		productDefinitionTemplate45EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE45);
		createEAttribute(productDefinitionTemplate45EClass, PRODUCT_DEFINITION_TEMPLATE45__FORECAST_PROBABILITY_NUMBER);
		createEAttribute(productDefinitionTemplate45EClass, PRODUCT_DEFINITION_TEMPLATE45__TOTAL_NUMBER_OF_FORECAST_PROBABILITIES);
		createEAttribute(productDefinitionTemplate45EClass, PRODUCT_DEFINITION_TEMPLATE45__PROBABILITY_TYPE);
		createEAttribute(productDefinitionTemplate45EClass, PRODUCT_DEFINITION_TEMPLATE45__SCALE_FACTOR_OF_LOWER_LIMIT);
		createEAttribute(productDefinitionTemplate45EClass, PRODUCT_DEFINITION_TEMPLATE45__SCALED_VALUE_OF_LOWER_LIMIT);
		createEAttribute(productDefinitionTemplate45EClass, PRODUCT_DEFINITION_TEMPLATE45__SCALE_FACTOR_OF_UPPER_LIMIT);
		createEAttribute(productDefinitionTemplate45EClass, PRODUCT_DEFINITION_TEMPLATE45__SCALED_VALUE_OF_UPPER_LIMIT);

		productDefinitionTemplate46EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE46);
		createEAttribute(productDefinitionTemplate46EClass, PRODUCT_DEFINITION_TEMPLATE46__PERCENTILE_VALUE);

		productDefinitionTemplate47EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE47);

		productDefinitionTemplate48EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE48);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__YEAR);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__MONTH);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__DAY);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__HOUR);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__MINUTE);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__SECOND);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__NUMBER_OF_TIME_RANGE_SPECIFICATIONS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__OUTERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__OUTERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__OUTERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__OUTERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__ADDITIONAL_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__ADDITIONAL_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__ADDITIONAL_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate48EClass, PRODUCT_DEFINITION_TEMPLATE48__ADDITIONAL_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate49EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE49);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__YEAR);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__MONTH);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__DAY);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__HOUR);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__MINUTE);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__SECOND);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__NUMBER_OF_TIME_RANGE_SPECIFICATIONS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__OUTERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__OUTERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__OUTERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__OUTERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__INNERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__INNERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__INNERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__INNERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__INNERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__INNERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__ADDITIONAL_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__ADDITIONAL_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__ADDITIONAL_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate49EClass, PRODUCT_DEFINITION_TEMPLATE49__ADDITIONAL_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate410EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE410);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__YEAR);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__MONTH);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__DAY);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__HOUR);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__MINUTE);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__SECOND);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__NUMBER_OF_TIME_RANGE_SPECIFICATIONS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__OUTERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__OUTERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__OUTERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__OUTERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__ADDITIONAL_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__ADDITIONAL_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__ADDITIONAL_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate410EClass, PRODUCT_DEFINITION_TEMPLATE410__ADDITIONAL_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate411EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE411);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__YEAR);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__MONTH);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__DAY);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__HOUR);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__MINUTE);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__SECOND);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__NUMBER_OF_TIME_RANGE_SPECIFICATIONS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__OUTERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__OUTERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__OUTERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__OUTERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__ADDITIONAL_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__ADDITIONAL_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__ADDITIONAL_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate411EClass, PRODUCT_DEFINITION_TEMPLATE411__ADDITIONAL_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate412EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE412);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__YEAR);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__MONTH);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__DAY);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__HOUR);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__MINUTE);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__SECOND);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__NUMBER_OF_TIME_RANGE_SPECIFICATIONS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__OUTERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__OUTERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__OUTERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__OUTERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__ADDITIONAL_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__ADDITIONAL_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__ADDITIONAL_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate412EClass, PRODUCT_DEFINITION_TEMPLATE412__ADDITIONAL_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate413EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE413);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__YEAR);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__MONTH);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__DAY);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__HOUR);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__MINUTE);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__SECOND);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__NUMBER_OF_TIME_RANGE_SPECIFICATIONS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__OUTERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__OUTERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__OUTERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__OUTERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__ADDITIONAL_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__ADDITIONAL_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__ADDITIONAL_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate413EClass, PRODUCT_DEFINITION_TEMPLATE413__ADDITIONAL_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate414EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE414);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__YEAR);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__MONTH);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__DAY);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__HOUR);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__MINUTE);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__SECOND);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__NUMBER_OF_TIME_RANGE_SPECIFICATIONS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__OUTERMOST_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__OUTERMOST_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__OUTERMOST_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__OUTERMOST_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__OUTERMOST_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__ADDITIONAL_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__ADDITIONAL_TYPE_OF_TIME_INCREMENT);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__ADDITIONAL_LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__ADDITIONAL_INDICATOR_OF_UNIT_OF_TIME_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate414EClass, PRODUCT_DEFINITION_TEMPLATE414__ADDITIONAL_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate415EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE415);
		createEAttribute(productDefinitionTemplate415EClass, PRODUCT_DEFINITION_TEMPLATE415__STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate415EClass, PRODUCT_DEFINITION_TEMPLATE415__TYPE_OF_SPATIAL_PROCESSING);
		createEAttribute(productDefinitionTemplate415EClass, PRODUCT_DEFINITION_TEMPLATE415__NUMBER_OF_DATA_POINTS);

		productDefinitionTemplate420EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE420);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__PARAMETER_CATEGORY);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__PARAMETER_NUMBER);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__TYPE_OF_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__NUMBER_OF_RADAR_SITES);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__UNIT_OF_TIME_RANGE);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__SITE_LATITUDE);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__SITE_LONGITUDE);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__SITE_ELEVATION);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__ALPHANUMERIC_SITE_ID);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__NUMERIC_SITE_ID);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__OPERATING_MODE);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__REFLECTIVITY_CALIBRATION_CONSTANT);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__QUALITY_CONTROL_INDICATOR);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__CLUTTER_FILTER_INDICATOR);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__CONSTANT_ANTENNA_ELEVATION_ANGLE);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__ACCUMULATION_INTERVAL);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__REFERENCE_REFLECTIVITY);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__RANGE_BIN_SPACING);
		createEAttribute(productDefinitionTemplate420EClass, PRODUCT_DEFINITION_TEMPLATE420__RADIAL_ANGULAR_SPACING);

		productDefinitionTemplate430EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE430);
		createEAttribute(productDefinitionTemplate430EClass, PRODUCT_DEFINITION_TEMPLATE430__PARAMETER_CATEGORY);
		createEAttribute(productDefinitionTemplate430EClass, PRODUCT_DEFINITION_TEMPLATE430__PARAMETER_NUMBER);
		createEAttribute(productDefinitionTemplate430EClass, PRODUCT_DEFINITION_TEMPLATE430__TYPE_OF_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate430EClass, PRODUCT_DEFINITION_TEMPLATE430__OBSERVATION_GENERATING_PROCESS_IDENTIFIER);
		createEAttribute(productDefinitionTemplate430EClass, PRODUCT_DEFINITION_TEMPLATE430__NUMBER_OF_CONTRIBUTING_SPECTRAL_BANDS);
		createEAttribute(productDefinitionTemplate430EClass, PRODUCT_DEFINITION_TEMPLATE430__CONTRIBUTING_BAND_OFFSETS);

		productDefinitionTemplate431EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE431);

		productDefinitionTemplate432EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE432);
		createEAttribute(productDefinitionTemplate432EClass, PRODUCT_DEFINITION_TEMPLATE432__ANALYSIS_OR_FORECAST_GENERATING_PROCESS_IDENTIFIER);
		createEAttribute(productDefinitionTemplate432EClass, PRODUCT_DEFINITION_TEMPLATE432__HOURS_OF_OBSERVATIONAL_DATA);
		createEAttribute(productDefinitionTemplate432EClass, PRODUCT_DEFINITION_TEMPLATE432__MINUTES_OF_OBSERVATIONAL_DATA);
		createEAttribute(productDefinitionTemplate432EClass, PRODUCT_DEFINITION_TEMPLATE432__INDICATOR_OF_UNIT_OF_TIME_RANGE);
		createEAttribute(productDefinitionTemplate432EClass, PRODUCT_DEFINITION_TEMPLATE432__FORECAST_TIME);

		productDefinitionTemplate440EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE440);
		createEAttribute(productDefinitionTemplate440EClass, PRODUCT_DEFINITION_TEMPLATE440__ATMOSPHERIC_CHEMICAL_CONSTITUENT_TYPE);

		productDefinitionTemplate441EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE441);
		createEAttribute(productDefinitionTemplate441EClass, PRODUCT_DEFINITION_TEMPLATE441__ATMOSPHERIC_CHEMICAL_CONSTITUENT_TYPE);

		productDefinitionTemplate442EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE442);
		createEAttribute(productDefinitionTemplate442EClass, PRODUCT_DEFINITION_TEMPLATE442__ATMOSPHERIC_CHEMICAL_CONSTITUENT_TYPE);

		productDefinitionTemplate443EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE443);
		createEAttribute(productDefinitionTemplate443EClass, PRODUCT_DEFINITION_TEMPLATE443__ATMOSPHERIC_CHEMICAL_CONSTITUENT_TYPE);

		productDefinitionTemplate444EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE444);
		createEAttribute(productDefinitionTemplate444EClass, PRODUCT_DEFINITION_TEMPLATE444__AEROSOL_TYPE);
		createEAttribute(productDefinitionTemplate444EClass, PRODUCT_DEFINITION_TEMPLATE444__TYPE_OF_INTERVAL_FOR_FIRST_AND_SECOND_SIZES);
		createEAttribute(productDefinitionTemplate444EClass, PRODUCT_DEFINITION_TEMPLATE444__SCALE_FACTOR_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate444EClass, PRODUCT_DEFINITION_TEMPLATE444__SCALED_VALUE_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate444EClass, PRODUCT_DEFINITION_TEMPLATE444__SCALE_FACTOR_OF_SECOND_SIZE);
		createEAttribute(productDefinitionTemplate444EClass, PRODUCT_DEFINITION_TEMPLATE444__SCALED_VALUE_OF_SECOND_SIZE);

		productDefinitionTemplate445EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE445);
		createEAttribute(productDefinitionTemplate445EClass, PRODUCT_DEFINITION_TEMPLATE445__AEROSOL_TYPE);
		createEAttribute(productDefinitionTemplate445EClass, PRODUCT_DEFINITION_TEMPLATE445__TYPE_OF_INTERVAL_FOR_FIRST_AND_SECOND_SIZES);
		createEAttribute(productDefinitionTemplate445EClass, PRODUCT_DEFINITION_TEMPLATE445__SCALE_FACTOR_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate445EClass, PRODUCT_DEFINITION_TEMPLATE445__SCALED_VALUE_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate445EClass, PRODUCT_DEFINITION_TEMPLATE445__SCALE_FACTOR_OF_SECOND_SIZE);
		createEAttribute(productDefinitionTemplate445EClass, PRODUCT_DEFINITION_TEMPLATE445__SCALED_VALUE_OF_SECOND_SIZE);

		productDefinitionTemplate446EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE446);
		createEAttribute(productDefinitionTemplate446EClass, PRODUCT_DEFINITION_TEMPLATE446__AEROSOL_TYPE);
		createEAttribute(productDefinitionTemplate446EClass, PRODUCT_DEFINITION_TEMPLATE446__TYPE_OF_INTERVAL_FOR_FIRST_AND_SECOND_SIZES);
		createEAttribute(productDefinitionTemplate446EClass, PRODUCT_DEFINITION_TEMPLATE446__SCALE_FACTOR_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate446EClass, PRODUCT_DEFINITION_TEMPLATE446__SCALED_VALUE_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate446EClass, PRODUCT_DEFINITION_TEMPLATE446__SCALE_FACTOR_OF_SECOND_SIZE);
		createEAttribute(productDefinitionTemplate446EClass, PRODUCT_DEFINITION_TEMPLATE446__SCALED_VALUE_OF_SECOND_SIZE);

		productDefinitionTemplate447EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE447);
		createEAttribute(productDefinitionTemplate447EClass, PRODUCT_DEFINITION_TEMPLATE447__AEROSOL_TYPE);
		createEAttribute(productDefinitionTemplate447EClass, PRODUCT_DEFINITION_TEMPLATE447__TYPE_OF_INTERVAL_FOR_FIRST_AND_SECOND_SIZES);
		createEAttribute(productDefinitionTemplate447EClass, PRODUCT_DEFINITION_TEMPLATE447__SCALE_FACTOR_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate447EClass, PRODUCT_DEFINITION_TEMPLATE447__SCALED_VALUE_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate447EClass, PRODUCT_DEFINITION_TEMPLATE447__SCALE_FACTOR_OF_SECOND_SIZE);
		createEAttribute(productDefinitionTemplate447EClass, PRODUCT_DEFINITION_TEMPLATE447__SCALED_VALUE_OF_SECOND_SIZE);

		productDefinitionTemplate448EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE448);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__AEROSOL_TYPE);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__TYPE_OF_INTERVAL_FOR_FIRST_AND_SECOND_SIZE);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALE_FACTOR_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALED_VALUE_OF_FIRST_SIZE);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALE_FACTOR_OF_SECOND_SIZE);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALED_VALUE_OF_SECOND_SIZE);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__TYPE_OF_INTERVAL_FOR_FIRST_AND_SECOND_WAVELENGTH);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALE_FACTOR_OF_FIRST_WAVELENGTH);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALED_VALUE_OF_FIRST_WAVELENGTH);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALE_FACTOR_OF_SECOND_WAVELENGTH);
		createEAttribute(productDefinitionTemplate448EClass, PRODUCT_DEFINITION_TEMPLATE448__SCALED_VALUE_OF_SECOND_WAVELENGTH);

		productDefinitionTemplate451EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE451);
		createEAttribute(productDefinitionTemplate451EClass, PRODUCT_DEFINITION_TEMPLATE451__NUMBER_OF_CATEGORIES);
		createEAttribute(productDefinitionTemplate451EClass, PRODUCT_DEFINITION_TEMPLATE451__CATEGORIES_OFFSETS);

		productDefinitionTemplate491EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE491);

		productDefinitionTemplate4254EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE4254);
		createEAttribute(productDefinitionTemplate4254EClass, PRODUCT_DEFINITION_TEMPLATE4254__PARAMETER_CATEGORY);
		createEAttribute(productDefinitionTemplate4254EClass, PRODUCT_DEFINITION_TEMPLATE4254__PARAMETER_NUMBER);
		createEAttribute(productDefinitionTemplate4254EClass, PRODUCT_DEFINITION_TEMPLATE4254__NUMBER_OF_CHARACTERS);

		productDefinitionTemplate41000EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE41000);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__PARAMETER_CATEGORY);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__PARAMETER_NUMBER);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__TYPE_OF_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__BACKGROUND_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__ANALYSIS_OR_FORECAST_GENERATING_PROCESS);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__HOURS_OF_OBSERVATIONAL_DATA_CUT_OFF);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__MINUTES_OF_OBSERVATIONAL_DATA_CUT_OFF);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__INDICATOR_OF_UNIT_OF_TIME_RANGE);
		createEAttribute(productDefinitionTemplate41000EClass, PRODUCT_DEFINITION_TEMPLATE41000__FORECAST_TIME);

		productDefinitionTemplate41001EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE41001);
		createEAttribute(productDefinitionTemplate41001EClass, PRODUCT_DEFINITION_TEMPLATE41001__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate41001EClass, PRODUCT_DEFINITION_TEMPLATE41001__STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate41001EClass, PRODUCT_DEFINITION_TEMPLATE41001__TYPE_OF_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate41001EClass, PRODUCT_DEFINITION_TEMPLATE41001__INDICATOR_OF_UNIT_OF_TIME_FOR_TIME_RANGE);
		createEAttribute(productDefinitionTemplate41001EClass, PRODUCT_DEFINITION_TEMPLATE41001__LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate41001EClass, PRODUCT_DEFINITION_TEMPLATE41001__INDICATOR_OF_UNIT_OF_TIME_FOR_INCREMENT);
		createEAttribute(productDefinitionTemplate41001EClass, PRODUCT_DEFINITION_TEMPLATE41001__TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		productDefinitionTemplate41002EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE41002);
		createEAttribute(productDefinitionTemplate41002EClass, PRODUCT_DEFINITION_TEMPLATE41002__HORIZONTAL_DIMENSION_PROCESSED);
		createEAttribute(productDefinitionTemplate41002EClass, PRODUCT_DEFINITION_TEMPLATE41002__TREATMENT_OF_MISSING_DATA);
		createEAttribute(productDefinitionTemplate41002EClass, PRODUCT_DEFINITION_TEMPLATE41002__TYPE_OF_STATISTICAL_PROCESSING);
		createEAttribute(productDefinitionTemplate41002EClass, PRODUCT_DEFINITION_TEMPLATE41002__START_OF_RANGE);
		createEAttribute(productDefinitionTemplate41002EClass, PRODUCT_DEFINITION_TEMPLATE41002__END_OF_RANGE);
		createEAttribute(productDefinitionTemplate41002EClass, PRODUCT_DEFINITION_TEMPLATE41002__NUMBER_OF_VALUES);

		productDefinitionTemplate41100EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE41100);

		productDefinitionTemplate41101EClass = createEClass(PRODUCT_DEFINITION_TEMPLATE41101);
		createEAttribute(productDefinitionTemplate41101EClass, PRODUCT_DEFINITION_TEMPLATE41101__TOTAL_NUMBER_OF_DATA_VALUES_MISSING);
		createEAttribute(productDefinitionTemplate41101EClass, PRODUCT_DEFINITION_TEMPLATE41101__STATISTICAL_PROCESS);
		createEAttribute(productDefinitionTemplate41101EClass, PRODUCT_DEFINITION_TEMPLATE41101__TYPE_OF_TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);
		createEAttribute(productDefinitionTemplate41101EClass, PRODUCT_DEFINITION_TEMPLATE41101__INDICATOR_OF_UNIT_OF_TIME_FOR_TIME_RANGE);
		createEAttribute(productDefinitionTemplate41101EClass, PRODUCT_DEFINITION_TEMPLATE41101__LENGTH_OF_THE_TIME_RANGE);
		createEAttribute(productDefinitionTemplate41101EClass, PRODUCT_DEFINITION_TEMPLATE41101__INDICATOR_OF_UNIT_OF_TIME_FOR_INCREMENT);
		createEAttribute(productDefinitionTemplate41101EClass, PRODUCT_DEFINITION_TEMPLATE41101__TIME_INCREMENT_BETWEEN_SUCCESSIVE_FIELDS);

		// Create enums
		productDefinitionTemplateNumberEEnum = createEEnum(PRODUCT_DEFINITION_TEMPLATE_NUMBER);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		MeteorologicalPackage theMeteorologicalPackage = (MeteorologicalPackage)EPackage.Registry.INSTANCE.getEPackage(MeteorologicalPackage.eNS_URI);

		// Add subpackages
		getESubpackages().add(theMeteorologicalPackage);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		productDefinitionTemplate40EClass.getESuperTypes().add(this.getIProductDefinition());
		productDefinitionTemplate41EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate42EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate43EClass.getESuperTypes().add(this.getProductDefinitionTemplate42());
		productDefinitionTemplate44EClass.getESuperTypes().add(this.getProductDefinitionTemplate42());
		productDefinitionTemplate45EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate46EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate47EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate48EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate49EClass.getESuperTypes().add(this.getProductDefinitionTemplate45());
		productDefinitionTemplate410EClass.getESuperTypes().add(this.getProductDefinitionTemplate46());
		productDefinitionTemplate411EClass.getESuperTypes().add(this.getProductDefinitionTemplate41());
		productDefinitionTemplate412EClass.getESuperTypes().add(this.getProductDefinitionTemplate42());
		productDefinitionTemplate413EClass.getESuperTypes().add(this.getProductDefinitionTemplate43());
		productDefinitionTemplate414EClass.getESuperTypes().add(this.getProductDefinitionTemplate44());
		productDefinitionTemplate415EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate420EClass.getESuperTypes().add(this.getIProductDefinition());
		productDefinitionTemplate430EClass.getESuperTypes().add(this.getIProductDefinition());
		productDefinitionTemplate431EClass.getESuperTypes().add(this.getProductDefinitionTemplate430());
		productDefinitionTemplate432EClass.getESuperTypes().add(this.getProductDefinitionTemplate430());
		productDefinitionTemplate440EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate441EClass.getESuperTypes().add(this.getProductDefinitionTemplate42());
		productDefinitionTemplate442EClass.getESuperTypes().add(this.getProductDefinitionTemplate48());
		productDefinitionTemplate443EClass.getESuperTypes().add(this.getProductDefinitionTemplate412());
		productDefinitionTemplate444EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate445EClass.getESuperTypes().add(this.getProductDefinitionTemplate42());
		productDefinitionTemplate446EClass.getESuperTypes().add(this.getProductDefinitionTemplate48());
		productDefinitionTemplate447EClass.getESuperTypes().add(this.getProductDefinitionTemplate412());
		productDefinitionTemplate448EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate451EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate491EClass.getESuperTypes().add(this.getProductDefinitionTemplate451());
		productDefinitionTemplate4254EClass.getESuperTypes().add(this.getIProductDefinition());
		productDefinitionTemplate41000EClass.getESuperTypes().add(this.getIProductDefinition());
		productDefinitionTemplate41001EClass.getESuperTypes().add(this.getProductDefinitionTemplate41000());
		productDefinitionTemplate41002EClass.getESuperTypes().add(this.getProductDefinitionTemplate41000());
		productDefinitionTemplate41100EClass.getESuperTypes().add(this.getProductDefinitionTemplate40());
		productDefinitionTemplate41101EClass.getESuperTypes().add(this.getProductDefinitionTemplate41100());

		// Initialize classes and features; add operations and parameters
		initEClass(iProductDefinitionEClass, IProductDefinition.class, "IProductDefinition", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

		initEClass(productDefinitionTemplate40EClass, ProductDefinitionTemplate40.class, "ProductDefinitionTemplate40", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_ParameterCategory(), ecorePackage.getEByte(), "parameterCategory", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_ParameterNumber(), ecorePackage.getEByte(), "parameterNumber", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_TypeOfGeneratingProcess(), ecorePackage.getEByte(), "typeOfGeneratingProcess", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_BackgroundGeneratingProcess(), ecorePackage.getEByte(), "backgroundGeneratingProcess", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_AnalysisOrForecastGeneratingProcess(), ecorePackage.getEByte(), "analysisOrForecastGeneratingProcess", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_HoursOfObservationalDataCutOff(), ecorePackage.getEShort(), "hoursOfObservationalDataCutOff", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_MinutesOfObservationalDataCutOff(), ecorePackage.getEByte(), "minutesOfObservationalDataCutOff", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_IndicatorOfUnitOfTimeRange(), ecorePackage.getEByte(), "indicatorOfUnitOfTimeRange", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_ForecastTime(), ecorePackage.getEInt(), "forecastTime", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_TypeOfFirstFixedSurface(), ecorePackage.getEByte(), "typeOfFirstFixedSurface", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_ScaleFactorOfFirstFixedSurface(), ecorePackage.getEByte(), "scaleFactorOfFirstFixedSurface", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_ScaledValueOfFirstFixedSurface(), ecorePackage.getEInt(), "scaledValueOfFirstFixedSurface", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_TypeOfSecondFixedSurface(), ecorePackage.getEByte(), "typeOfSecondFixedSurface", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_ScaleFactorOfSecondFixedSurface(), ecorePackage.getEByte(), "scaleFactorOfSecondFixedSurface", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate40_ScaledValueOfSecondFixedSurface(), ecorePackage.getEInt(), "scaledValueOfSecondFixedSurface", null, 1, 1, ProductDefinitionTemplate40.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate41EClass, ProductDefinitionTemplate41.class, "ProductDefinitionTemplate41", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41_TypeOfEnsembleForecast(), ecorePackage.getEByte(), "typeOfEnsembleForecast", null, 1, 1, ProductDefinitionTemplate41.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41_PerturbationNumber(), ecorePackage.getEByte(), "perturbationNumber", null, 1, 1, ProductDefinitionTemplate41.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41_NumberOfForecastsInEnsemble(), ecorePackage.getEByte(), "numberOfForecastsInEnsemble", null, 1, 1, ProductDefinitionTemplate41.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate42EClass, ProductDefinitionTemplate42.class, "ProductDefinitionTemplate42", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate42_DerivedForecast(), ecorePackage.getEByte(), "derivedForecast", null, 1, 1, ProductDefinitionTemplate42.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate42_NumberOfForecastsInEnsemble(), ecorePackage.getEByte(), "numberOfForecastsInEnsemble", null, 1, 1, ProductDefinitionTemplate42.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate43EClass, ProductDefinitionTemplate43.class, "ProductDefinitionTemplate43", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_ClusterIdentifier(), ecorePackage.getEByte(), "clusterIdentifier", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_NumberOfClusterHighResolution(), ecorePackage.getEByte(), "numberOfClusterHighResolution", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_NumberOfClusterLowResolution(), ecorePackage.getEByte(), "numberOfClusterLowResolution", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_TotalNumberOfClusters(), ecorePackage.getEByte(), "totalNumberOfClusters", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_ClusteringMethod(), ecorePackage.getEByte(), "clusteringMethod", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_NorthernLatitudeOfClusterDomain(), ecorePackage.getEInt(), "northernLatitudeOfClusterDomain", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_SouthernLatitudeOfClusterDomain(), ecorePackage.getEInt(), "southernLatitudeOfClusterDomain", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_EasternLatitudeOfClusterDomain(), ecorePackage.getEInt(), "easternLatitudeOfClusterDomain", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_WesternLatitudeOfClusterDomain(), ecorePackage.getEInt(), "westernLatitudeOfClusterDomain", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_NumberOfForecastsInTheCluster(), ecorePackage.getEByte(), "numberOfForecastsInTheCluster", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_ScaleFactorOfStandardDeviationInTheCluster(), ecorePackage.getEByte(), "scaleFactorOfStandardDeviationInTheCluster", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_ScaledValueOfStandardDeviationInTheCluster(), ecorePackage.getEInt(), "scaledValueOfStandardDeviationInTheCluster", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_ScaleFactorOfDistanceOfTheClusterFromEnsembleMean(), ecorePackage.getEByte(), "scaleFactorOfDistanceOfTheClusterFromEnsembleMean", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_ScaledValueOfDistanceOfTheClusterFromEnsembleMean(), ecorePackage.getEInt(), "scaledValueOfDistanceOfTheClusterFromEnsembleMean", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate43_EnsembleForecastNumbersOffset(), ecorePackage.getELong(), "ensembleForecastNumbersOffset", null, 1, 1, ProductDefinitionTemplate43.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate44EClass, ProductDefinitionTemplate44.class, "ProductDefinitionTemplate44", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_ClusterIdentifier(), ecorePackage.getEByte(), "clusterIdentifier", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_NumberOfClusterHighResolution(), ecorePackage.getEByte(), "numberOfClusterHighResolution", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_NumberOfClusterLowResolution(), ecorePackage.getEByte(), "numberOfClusterLowResolution", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_TotalNumberOfClusters(), ecorePackage.getEByte(), "totalNumberOfClusters", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_ClusteringMethod(), ecorePackage.getEByte(), "clusteringMethod", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_LatitudeOfCentralPointInClusterDomain(), ecorePackage.getEInt(), "latitudeOfCentralPointInClusterDomain", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_LongitudeOfCentralPointInClusterDomain(), ecorePackage.getEInt(), "longitudeOfCentralPointInClusterDomain", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_RadiusOfClusterDomain(), ecorePackage.getEInt(), "radiusOfClusterDomain", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_NumberOfForecastsInTheCluster(), ecorePackage.getEByte(), "numberOfForecastsInTheCluster", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_ScaleFactorOfStandardDeviationInTheCluster(), ecorePackage.getEByte(), "scaleFactorOfStandardDeviationInTheCluster", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_ScaledValueOfStandardDeviationInTheCluster(), ecorePackage.getEInt(), "scaledValueOfStandardDeviationInTheCluster", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_ScaleFactorOfDistanceOfTheClusterFromEnsembleMean(), ecorePackage.getEByte(), "scaleFactorOfDistanceOfTheClusterFromEnsembleMean", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_ScaledValueOfDistanceOfTheClusterFromEnsembleMean(), ecorePackage.getEInt(), "scaledValueOfDistanceOfTheClusterFromEnsembleMean", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate44_EnsembleForecastNumbersOffset(), ecorePackage.getELong(), "ensembleForecastNumbersOffset", null, 1, 1, ProductDefinitionTemplate44.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate45EClass, ProductDefinitionTemplate45.class, "ProductDefinitionTemplate45", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate45_ForecastProbabilityNumber(), ecorePackage.getEByte(), "forecastProbabilityNumber", null, 1, 1, ProductDefinitionTemplate45.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate45_TotalNumberOfForecastProbabilities(), ecorePackage.getEByte(), "totalNumberOfForecastProbabilities", null, 1, 1, ProductDefinitionTemplate45.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate45_ProbabilityType(), ecorePackage.getEByte(), "probabilityType", null, 1, 1, ProductDefinitionTemplate45.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate45_ScaleFactorOfLowerLimit(), ecorePackage.getEByte(), "scaleFactorOfLowerLimit", null, 1, 1, ProductDefinitionTemplate45.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate45_ScaledValueOfLowerLimit(), ecorePackage.getEInt(), "scaledValueOfLowerLimit", null, 1, 1, ProductDefinitionTemplate45.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate45_ScaleFactorOfUpperLimit(), ecorePackage.getEByte(), "scaleFactorOfUpperLimit", null, 1, 1, ProductDefinitionTemplate45.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate45_ScaledValueOfUpperLimit(), ecorePackage.getEInt(), "scaledValueOfUpperLimit", null, 1, 1, ProductDefinitionTemplate45.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate46EClass, ProductDefinitionTemplate46.class, "ProductDefinitionTemplate46", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate46_PercentileValue(), ecorePackage.getEByte(), "percentileValue", null, 1, 1, ProductDefinitionTemplate46.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate47EClass, ProductDefinitionTemplate47.class, "ProductDefinitionTemplate47", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

		initEClass(productDefinitionTemplate48EClass, ProductDefinitionTemplate48.class, "ProductDefinitionTemplate48", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_Year(), ecorePackage.getEShort(), "year", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_Month(), ecorePackage.getEByte(), "month", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_Day(), ecorePackage.getEByte(), "day", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_Second(), ecorePackage.getEByte(), "second", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_NumberOfTimeRangeSpecifications(), ecorePackage.getEByte(), "numberOfTimeRangeSpecifications", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_OutermostStatisticalProcess(), ecorePackage.getEByte(), "outermostStatisticalProcess", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_OutermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "outermostTypeOfTimeIncrement", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeStatisticalProcess", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_OutermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "outermostLengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeSuccessiveFields", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_OutermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "outermostTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_AdditionalStatisticalProcess(), ecorePackage.getEByte(), "additionalStatisticalProcess", null, 0, -1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_AdditionalTypeOfTimeIncrement(), ecorePackage.getEByte(), "additionalTypeOfTimeIncrement", null, 0, -1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeStatisticalProcess", null, 0, -1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_AdditionalLengthOfTheTimeRange(), ecorePackage.getEInt(), "additionalLengthOfTheTimeRange", null, 0, -1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeSuccessiveFields", null, 0, -1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate48_AdditionalTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "additionalTimeIncrementBetweenSuccessiveFields", null, 0, -1, ProductDefinitionTemplate48.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate49EClass, ProductDefinitionTemplate49.class, "ProductDefinitionTemplate49", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_Year(), ecorePackage.getEShort(), "year", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_Month(), ecorePackage.getEByte(), "month", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_Day(), ecorePackage.getEByte(), "day", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_Second(), ecorePackage.getEByte(), "second", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_NumberOfTimeRangeSpecifications(), ecorePackage.getEByte(), "numberOfTimeRangeSpecifications", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_OutermostStatisticalProcess(), ecorePackage.getEByte(), "outermostStatisticalProcess", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_OutermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "outermostTypeOfTimeIncrement", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeStatisticalProcess", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_OutermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "outermostLengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeSuccessiveFields", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_OutermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "outermostTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_InnermostStatisticalProcess(), ecorePackage.getEByte(), "innermostStatisticalProcess", null, 0, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_InnermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "innermostTypeOfTimeIncrement", null, 0, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_InnermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "innermostIndicatorOfUnitOfTimeStatisticalProcess", null, 0, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_InnermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "innermostLengthOfTheTimeRange", null, 0, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_InnermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "innermostIndicatorOfUnitOfTimeSuccessiveFields", null, 0, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_InnermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "innermostTimeIncrementBetweenSuccessiveFields", null, 0, 1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_AdditionalStatisticalProcess(), ecorePackage.getEByte(), "additionalStatisticalProcess", null, 0, -1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_AdditionalTypeOfTimeIncrement(), ecorePackage.getEByte(), "additionalTypeOfTimeIncrement", null, 0, -1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeStatisticalProcess", null, 0, -1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_AdditionalLengthOfTheTimeRange(), ecorePackage.getEInt(), "additionalLengthOfTheTimeRange", null, 0, -1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeSuccessiveFields", null, 0, -1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate49_AdditionalTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "additionalTimeIncrementBetweenSuccessiveFields", null, 0, -1, ProductDefinitionTemplate49.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate410EClass, ProductDefinitionTemplate410.class, "ProductDefinitionTemplate410", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_Year(), ecorePackage.getEShort(), "year", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_Month(), ecorePackage.getEByte(), "month", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_Day(), ecorePackage.getEByte(), "day", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_Second(), ecorePackage.getEByte(), "second", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_NumberOfTimeRangeSpecifications(), ecorePackage.getEByte(), "numberOfTimeRangeSpecifications", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_OutermostStatisticalProcess(), ecorePackage.getEByte(), "outermostStatisticalProcess", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_OutermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "outermostTypeOfTimeIncrement", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeStatisticalProcess", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_OutermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "outermostLengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeSuccessiveFields", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_OutermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "outermostTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_AdditionalStatisticalProcess(), ecorePackage.getEByte(), "additionalStatisticalProcess", null, 0, -1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_AdditionalTypeOfTimeIncrement(), ecorePackage.getEByte(), "additionalTypeOfTimeIncrement", null, 0, -1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeStatisticalProcess", null, 0, -1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_AdditionalLengthOfTheTimeRange(), ecorePackage.getEInt(), "additionalLengthOfTheTimeRange", null, 0, -1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeSuccessiveFields", null, 0, -1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate410_AdditionalTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "additionalTimeIncrementBetweenSuccessiveFields", null, 0, -1, ProductDefinitionTemplate410.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate411EClass, ProductDefinitionTemplate411.class, "ProductDefinitionTemplate411", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_Year(), ecorePackage.getEShort(), "year", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_Month(), ecorePackage.getEByte(), "month", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_Day(), ecorePackage.getEByte(), "day", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_Second(), ecorePackage.getEByte(), "second", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_NumberOfTimeRangeSpecifications(), ecorePackage.getEByte(), "numberOfTimeRangeSpecifications", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_OutermostStatisticalProcess(), ecorePackage.getEByte(), "outermostStatisticalProcess", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_OutermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "outermostTypeOfTimeIncrement", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeStatisticalProcess", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_OutermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "outermostLengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeSuccessiveFields", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_OutermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "outermostTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_AdditionalStatisticalProcess(), ecorePackage.getEByte(), "additionalStatisticalProcess", null, 0, -1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_AdditionalTypeOfTimeIncrement(), ecorePackage.getEByte(), "additionalTypeOfTimeIncrement", null, 0, -1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeStatisticalProcess", null, 0, -1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_AdditionalLengthOfTheTimeRange(), ecorePackage.getEInt(), "additionalLengthOfTheTimeRange", null, 0, -1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeSuccessiveFields", null, 0, -1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate411_AdditionalTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "additionalTimeIncrementBetweenSuccessiveFields", null, 0, -1, ProductDefinitionTemplate411.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate412EClass, ProductDefinitionTemplate412.class, "ProductDefinitionTemplate412", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_Year(), ecorePackage.getEShort(), "year", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_Month(), ecorePackage.getEByte(), "month", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_Day(), ecorePackage.getEByte(), "day", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_Second(), ecorePackage.getEByte(), "second", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_NumberOfTimeRangeSpecifications(), ecorePackage.getEByte(), "numberOfTimeRangeSpecifications", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_OutermostStatisticalProcess(), ecorePackage.getEByte(), "outermostStatisticalProcess", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_OutermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "outermostTypeOfTimeIncrement", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeStatisticalProcess", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_OutermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "outermostLengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeSuccessiveFields", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_OutermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "outermostTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_AdditionalStatisticalProcess(), ecorePackage.getEByte(), "additionalStatisticalProcess", null, 0, -1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_AdditionalTypeOfTimeIncrement(), ecorePackage.getEByte(), "additionalTypeOfTimeIncrement", null, 0, -1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeStatisticalProcess", null, 0, -1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_AdditionalLengthOfTheTimeRange(), ecorePackage.getEInt(), "additionalLengthOfTheTimeRange", null, 0, -1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeSuccessiveFields", null, 0, -1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate412_AdditionalTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "additionalTimeIncrementBetweenSuccessiveFields", null, 0, -1, ProductDefinitionTemplate412.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate413EClass, ProductDefinitionTemplate413.class, "ProductDefinitionTemplate413", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_Year(), ecorePackage.getEShort(), "year", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_Month(), ecorePackage.getEByte(), "month", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_Day(), ecorePackage.getEByte(), "day", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_Second(), ecorePackage.getEByte(), "second", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_NumberOfTimeRangeSpecifications(), ecorePackage.getEByte(), "numberOfTimeRangeSpecifications", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_OutermostStatisticalProcess(), ecorePackage.getEByte(), "outermostStatisticalProcess", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_OutermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "outermostTypeOfTimeIncrement", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeStatisticalProcess", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_OutermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "outermostLengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeSuccessiveFields", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_OutermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "outermostTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_AdditionalStatisticalProcess(), ecorePackage.getEByte(), "additionalStatisticalProcess", null, 0, -1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_AdditionalTypeOfTimeIncrement(), ecorePackage.getEByte(), "additionalTypeOfTimeIncrement", null, 0, -1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeStatisticalProcess", null, 0, -1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_AdditionalLengthOfTheTimeRange(), ecorePackage.getEInt(), "additionalLengthOfTheTimeRange", null, 0, -1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeSuccessiveFields", null, 0, -1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate413_AdditionalTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "additionalTimeIncrementBetweenSuccessiveFields", null, 0, -1, ProductDefinitionTemplate413.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate414EClass, ProductDefinitionTemplate414.class, "ProductDefinitionTemplate414", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_Year(), ecorePackage.getEShort(), "year", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_Month(), ecorePackage.getEByte(), "month", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_Day(), ecorePackage.getEByte(), "day", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_Hour(), ecorePackage.getEByte(), "hour", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_Minute(), ecorePackage.getEByte(), "minute", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_Second(), ecorePackage.getEByte(), "second", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_NumberOfTimeRangeSpecifications(), ecorePackage.getEByte(), "numberOfTimeRangeSpecifications", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_OutermostStatisticalProcess(), ecorePackage.getEByte(), "outermostStatisticalProcess", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_OutermostTypeOfTimeIncrement(), ecorePackage.getEByte(), "outermostTypeOfTimeIncrement", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeStatisticalProcess", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_OutermostLengthOfTheTimeRange(), ecorePackage.getEInt(), "outermostLengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "outermostIndicatorOfUnitOfTimeSuccessiveFields", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_OutermostTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "outermostTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_AdditionalStatisticalProcess(), ecorePackage.getEByte(), "additionalStatisticalProcess", null, 0, -1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_AdditionalTypeOfTimeIncrement(), ecorePackage.getEByte(), "additionalTypeOfTimeIncrement", null, 0, -1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeStatisticalProcess", null, 0, -1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_AdditionalLengthOfTheTimeRange(), ecorePackage.getEInt(), "additionalLengthOfTheTimeRange", null, 0, -1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), ecorePackage.getEByte(), "additionalIndicatorOfUnitOfTimeSuccessiveFields", null, 0, -1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate414_AdditionalTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "additionalTimeIncrementBetweenSuccessiveFields", null, 0, -1, ProductDefinitionTemplate414.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate415EClass, ProductDefinitionTemplate415.class, "ProductDefinitionTemplate415", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate415_StatisticalProcess(), ecorePackage.getEByte(), "statisticalProcess", null, 1, 1, ProductDefinitionTemplate415.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate415_TypeOfSpatialProcessing(), ecorePackage.getEByte(), "typeOfSpatialProcessing", null, 1, 1, ProductDefinitionTemplate415.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate415_NumberOfDataPoints(), ecorePackage.getEByte(), "numberOfDataPoints", null, 1, 1, ProductDefinitionTemplate415.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate420EClass, ProductDefinitionTemplate420.class, "ProductDefinitionTemplate420", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_ParameterCategory(), ecorePackage.getEByte(), "parameterCategory", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_ParameterNumber(), ecorePackage.getEByte(), "parameterNumber", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_TypeOfGeneratingProcess(), ecorePackage.getEByte(), "typeOfGeneratingProcess", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_NumberOfRadarSites(), ecorePackage.getEByte(), "numberOfRadarSites", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_UnitOfTimeRange(), ecorePackage.getEByte(), "unitOfTimeRange", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_SiteLatitude(), ecorePackage.getEInt(), "siteLatitude", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_SiteLongitude(), ecorePackage.getEInt(), "siteLongitude", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_SiteElevation(), ecorePackage.getEInt(), "siteElevation", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_AlphanumericSiteID(), ecorePackage.getEInt(), "alphanumericSiteID", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_NumericSiteID(), ecorePackage.getEInt(), "numericSiteID", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_OperatingMode(), ecorePackage.getEByte(), "operatingMode", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_ReflectivityCalibrationConstant(), ecorePackage.getEByte(), "reflectivityCalibrationConstant", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_QualityControlIndicator(), ecorePackage.getEByte(), "qualityControlIndicator", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_ClutterFilterIndicator(), ecorePackage.getEByte(), "clutterFilterIndicator", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_ConstantAntennaElevationAngle(), ecorePackage.getEByte(), "constantAntennaElevationAngle", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_AccumulationInterval(), ecorePackage.getEShort(), "accumulationInterval", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_ReferenceReflectivity(), ecorePackage.getEByte(), "referenceReflectivity", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_RangeBinSpacing(), ecorePackage.getEInt(), "rangeBinSpacing", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate420_RadialAngularSpacing(), ecorePackage.getEShort(), "radialAngularSpacing", null, 1, 1, ProductDefinitionTemplate420.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate430EClass, ProductDefinitionTemplate430.class, "ProductDefinitionTemplate430", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate430_ParameterCategory(), ecorePackage.getEByte(), "parameterCategory", null, 1, 1, ProductDefinitionTemplate430.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate430_ParameterNumber(), ecorePackage.getEByte(), "parameterNumber", null, 1, 1, ProductDefinitionTemplate430.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate430_TypeOfGeneratingProcess(), ecorePackage.getEByte(), "typeOfGeneratingProcess", null, 1, 1, ProductDefinitionTemplate430.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate430_ObservationGeneratingProcessIdentifier(), ecorePackage.getEByte(), "observationGeneratingProcessIdentifier", null, 1, 1, ProductDefinitionTemplate430.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate430_NumberOfContributingSpectralBands(), ecorePackage.getEByte(), "numberOfContributingSpectralBands", null, 1, 1, ProductDefinitionTemplate430.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate430_ContributingBandOffsets(), ecorePackage.getELong(), "contributingBandOffsets", null, 1, -1, ProductDefinitionTemplate430.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate431EClass, ProductDefinitionTemplate431.class, "ProductDefinitionTemplate431", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

		initEClass(productDefinitionTemplate432EClass, ProductDefinitionTemplate432.class, "ProductDefinitionTemplate432", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate432_AnalysisOrForecastGeneratingProcessIdentifier(), ecorePackage.getEByte(), "analysisOrForecastGeneratingProcessIdentifier", null, 1, 1, ProductDefinitionTemplate432.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate432_HoursOfObservationalData(), ecorePackage.getEShort(), "hoursOfObservationalData", null, 1, 1, ProductDefinitionTemplate432.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate432_MinutesOfObservationalData(), ecorePackage.getEByte(), "minutesOfObservationalData", null, 1, 1, ProductDefinitionTemplate432.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate432_IndicatorOfUnitOfTimeRange(), ecorePackage.getEByte(), "indicatorOfUnitOfTimeRange", null, 1, 1, ProductDefinitionTemplate432.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate432_ForecastTime(), ecorePackage.getEInt(), "forecastTime", null, 1, 1, ProductDefinitionTemplate432.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate440EClass, ProductDefinitionTemplate440.class, "ProductDefinitionTemplate440", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate440_AtmosphericChemicalConstituentType(), ecorePackage.getEShort(), "atmosphericChemicalConstituentType", null, 1, 1, ProductDefinitionTemplate440.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate441EClass, ProductDefinitionTemplate441.class, "ProductDefinitionTemplate441", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate441_AtmosphericChemicalConstituentType(), ecorePackage.getEShort(), "atmosphericChemicalConstituentType", null, 1, 1, ProductDefinitionTemplate441.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate442EClass, ProductDefinitionTemplate442.class, "ProductDefinitionTemplate442", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate442_AtmosphericChemicalConstituentType(), ecorePackage.getEShort(), "atmosphericChemicalConstituentType", null, 1, 1, ProductDefinitionTemplate442.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate443EClass, ProductDefinitionTemplate443.class, "ProductDefinitionTemplate443", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate443_AtmosphericChemicalConstituentType(), ecorePackage.getEShort(), "atmosphericChemicalConstituentType", null, 1, 1, ProductDefinitionTemplate443.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate444EClass, ProductDefinitionTemplate444.class, "ProductDefinitionTemplate444", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate444_AerosolType(), ecorePackage.getEByte(), "aerosolType", null, 1, 1, ProductDefinitionTemplate444.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate444_TypeOfIntervalForFirstAndSecondSizes(), ecorePackage.getEByte(), "typeOfIntervalForFirstAndSecondSizes", null, 1, 1, ProductDefinitionTemplate444.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate444_ScaleFactorOfFirstSize(), ecorePackage.getEByte(), "scaleFactorOfFirstSize", null, 1, 1, ProductDefinitionTemplate444.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate444_ScaledValueOfFirstSize(), ecorePackage.getEInt(), "scaledValueOfFirstSize", null, 1, 1, ProductDefinitionTemplate444.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate444_ScaleFactorOfSecondSize(), ecorePackage.getEByte(), "scaleFactorOfSecondSize", null, 1, 1, ProductDefinitionTemplate444.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate444_ScaledValueOfSecondSize(), ecorePackage.getEInt(), "scaledValueOfSecondSize", null, 1, 1, ProductDefinitionTemplate444.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate445EClass, ProductDefinitionTemplate445.class, "ProductDefinitionTemplate445", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate445_AerosolType(), ecorePackage.getEByte(), "aerosolType", null, 1, 1, ProductDefinitionTemplate445.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate445_TypeOfIntervalForFirstAndSecondSizes(), ecorePackage.getEByte(), "typeOfIntervalForFirstAndSecondSizes", null, 1, 1, ProductDefinitionTemplate445.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate445_ScaleFactorOfFirstSize(), ecorePackage.getEByte(), "scaleFactorOfFirstSize", null, 1, 1, ProductDefinitionTemplate445.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate445_ScaledValueOfFirstSize(), ecorePackage.getEInt(), "scaledValueOfFirstSize", null, 1, 1, ProductDefinitionTemplate445.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate445_ScaleFactorOfSecondSize(), ecorePackage.getEByte(), "scaleFactorOfSecondSize", null, 1, 1, ProductDefinitionTemplate445.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate445_ScaledValueOfSecondSize(), ecorePackage.getEInt(), "scaledValueOfSecondSize", null, 1, 1, ProductDefinitionTemplate445.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate446EClass, ProductDefinitionTemplate446.class, "ProductDefinitionTemplate446", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate446_AerosolType(), ecorePackage.getEByte(), "aerosolType", null, 1, 1, ProductDefinitionTemplate446.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate446_TypeOfIntervalForFirstAndSecondSizes(), ecorePackage.getEByte(), "typeOfIntervalForFirstAndSecondSizes", null, 1, 1, ProductDefinitionTemplate446.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate446_ScaleFactorOfFirstSize(), ecorePackage.getEByte(), "scaleFactorOfFirstSize", null, 1, 1, ProductDefinitionTemplate446.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate446_ScaledValueOfFirstSize(), ecorePackage.getEInt(), "scaledValueOfFirstSize", null, 1, 1, ProductDefinitionTemplate446.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate446_ScaleFactorOfSecondSize(), ecorePackage.getEByte(), "scaleFactorOfSecondSize", null, 1, 1, ProductDefinitionTemplate446.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate446_ScaledValueOfSecondSize(), ecorePackage.getEInt(), "scaledValueOfSecondSize", null, 1, 1, ProductDefinitionTemplate446.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate447EClass, ProductDefinitionTemplate447.class, "ProductDefinitionTemplate447", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate447_AerosolType(), ecorePackage.getEByte(), "aerosolType", null, 1, 1, ProductDefinitionTemplate447.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate447_TypeOfIntervalForFirstAndSecondSizes(), ecorePackage.getEByte(), "typeOfIntervalForFirstAndSecondSizes", null, 1, 1, ProductDefinitionTemplate447.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate447_ScaleFactorOfFirstSize(), ecorePackage.getEByte(), "scaleFactorOfFirstSize", null, 1, 1, ProductDefinitionTemplate447.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate447_ScaledValueOfFirstSize(), ecorePackage.getEInt(), "scaledValueOfFirstSize", null, 1, 1, ProductDefinitionTemplate447.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate447_ScaleFactorOfSecondSize(), ecorePackage.getEByte(), "scaleFactorOfSecondSize", null, 1, 1, ProductDefinitionTemplate447.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate447_ScaledValueOfSecondSize(), ecorePackage.getEInt(), "scaledValueOfSecondSize", null, 1, 1, ProductDefinitionTemplate447.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate448EClass, ProductDefinitionTemplate448.class, "ProductDefinitionTemplate448", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_AerosolType(), ecorePackage.getEShort(), "aerosolType", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_TypeOfIntervalForFirstAndSecondSize(), ecorePackage.getEByte(), "typeOfIntervalForFirstAndSecondSize", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaleFactorOfFirstSize(), ecorePackage.getEByte(), "scaleFactorOfFirstSize", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaledValueOfFirstSize(), ecorePackage.getEInt(), "scaledValueOfFirstSize", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaleFactorOfSecondSize(), ecorePackage.getEByte(), "scaleFactorOfSecondSize", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaledValueOfSecondSize(), ecorePackage.getEInt(), "scaledValueOfSecondSize", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_TypeOfIntervalForFirstAndSecondWavelength(), ecorePackage.getEByte(), "typeOfIntervalForFirstAndSecondWavelength", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaleFactorOfFirstWavelength(), ecorePackage.getEByte(), "scaleFactorOfFirstWavelength", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaledValueOfFirstWavelength(), ecorePackage.getEInt(), "scaledValueOfFirstWavelength", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaleFactorOfSecondWavelength(), ecorePackage.getEByte(), "scaleFactorOfSecondWavelength", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate448_ScaledValueOfSecondWavelength(), ecorePackage.getEInt(), "scaledValueOfSecondWavelength", null, 1, 1, ProductDefinitionTemplate448.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate451EClass, ProductDefinitionTemplate451.class, "ProductDefinitionTemplate451", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate451_NumberOfCategories(), ecorePackage.getEByte(), "numberOfCategories", null, 1, 1, ProductDefinitionTemplate451.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate451_CategoriesOffsets(), ecorePackage.getELong(), "categoriesOffsets", null, 1, -1, ProductDefinitionTemplate451.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate491EClass, ProductDefinitionTemplate491.class, "ProductDefinitionTemplate491", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

		initEClass(productDefinitionTemplate4254EClass, ProductDefinitionTemplate4254.class, "ProductDefinitionTemplate4254", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate4254_ParameterCategory(), ecorePackage.getEByte(), "parameterCategory", null, 1, 1, ProductDefinitionTemplate4254.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate4254_ParameterNumber(), ecorePackage.getEByte(), "parameterNumber", null, 1, 1, ProductDefinitionTemplate4254.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate4254_NumberOfCharacters(), ecorePackage.getEInt(), "numberOfCharacters", null, 1, 1, ProductDefinitionTemplate4254.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate41000EClass, ProductDefinitionTemplate41000.class, "ProductDefinitionTemplate41000", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_ParameterCategory(), ecorePackage.getEByte(), "parameterCategory", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_ParameterNumber(), ecorePackage.getEByte(), "parameterNumber", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_TypeOfGeneratingProcess(), ecorePackage.getEByte(), "typeOfGeneratingProcess", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_BackgroundGeneratingProcess(), ecorePackage.getEByte(), "backgroundGeneratingProcess", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_AnalysisOrForecastGeneratingProcess(), ecorePackage.getEByte(), "analysisOrForecastGeneratingProcess", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_HoursOfObservationalDataCutOff(), ecorePackage.getEShort(), "hoursOfObservationalDataCutOff", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_MinutesOfObservationalDataCutOff(), ecorePackage.getEByte(), "minutesOfObservationalDataCutOff", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_IndicatorOfUnitOfTimeRange(), ecorePackage.getEByte(), "indicatorOfUnitOfTimeRange", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41000_ForecastTime(), ecorePackage.getEInt(), "forecastTime", null, 1, 1, ProductDefinitionTemplate41000.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate41001EClass, ProductDefinitionTemplate41001.class, "ProductDefinitionTemplate41001", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41001_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate41001.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41001_StatisticalProcess(), ecorePackage.getEByte(), "statisticalProcess", null, 1, 1, ProductDefinitionTemplate41001.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41001_TypeOfTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEByte(), "typeOfTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate41001.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41001_IndicatorOfUnitOfTimeForTimeRange(), ecorePackage.getEByte(), "indicatorOfUnitOfTimeForTimeRange", null, 1, 1, ProductDefinitionTemplate41001.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41001_LengthOfTheTimeRange(), ecorePackage.getEInt(), "lengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate41001.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41001_IndicatorOfUnitOfTimeForIncrement(), ecorePackage.getEByte(), "indicatorOfUnitOfTimeForIncrement", null, 1, 1, ProductDefinitionTemplate41001.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41001_TimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "timeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate41001.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate41002EClass, ProductDefinitionTemplate41002.class, "ProductDefinitionTemplate41002", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41002_HorizontalDimensionProcessed(), ecorePackage.getEByte(), "horizontalDimensionProcessed", null, 1, 1, ProductDefinitionTemplate41002.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41002_TreatmentOfMissingData(), ecorePackage.getEByte(), "treatmentOfMissingData", null, 1, 1, ProductDefinitionTemplate41002.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41002_TypeOfStatisticalProcessing(), ecorePackage.getEByte(), "typeOfStatisticalProcessing", null, 1, 1, ProductDefinitionTemplate41002.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41002_StartOfRange(), ecorePackage.getEInt(), "startOfRange", null, 1, 1, ProductDefinitionTemplate41002.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41002_EndOfRange(), ecorePackage.getEInt(), "endOfRange", null, 1, 1, ProductDefinitionTemplate41002.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41002_NumberOfValues(), ecorePackage.getEInt(), "numberOfValues", null, 1, 1, ProductDefinitionTemplate41002.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		initEClass(productDefinitionTemplate41100EClass, ProductDefinitionTemplate41100.class, "ProductDefinitionTemplate41100", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$

		initEClass(productDefinitionTemplate41101EClass, ProductDefinitionTemplate41101.class, "ProductDefinitionTemplate41101", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41101_TotalNumberOfDataValuesMissing(), ecorePackage.getEInt(), "totalNumberOfDataValuesMissing", null, 1, 1, ProductDefinitionTemplate41101.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41101_StatisticalProcess(), ecorePackage.getEByte(), "statisticalProcess", null, 1, 1, ProductDefinitionTemplate41101.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41101_TypeOfTimeIncrementBetweenSuccessiveFields(), ecorePackage.getEByte(), "typeOfTimeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate41101.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41101_IndicatorOfUnitOfTimeForTimeRange(), ecorePackage.getEByte(), "indicatorOfUnitOfTimeForTimeRange", null, 1, 1, ProductDefinitionTemplate41101.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41101_LengthOfTheTimeRange(), ecorePackage.getEInt(), "lengthOfTheTimeRange", null, 1, 1, ProductDefinitionTemplate41101.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41101_IndicatorOfUnitOfTimeForIncrement(), ecorePackage.getEByte(), "indicatorOfUnitOfTimeForIncrement", null, 1, 1, ProductDefinitionTemplate41101.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$
		initEAttribute(getProductDefinitionTemplate41101_TimeIncrementBetweenSuccessiveFields(), ecorePackage.getEInt(), "timeIncrementBetweenSuccessiveFields", null, 1, 1, ProductDefinitionTemplate41101.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); //$NON-NLS-1$

		// Initialize enums and add enum literals
		initEEnum(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.class, "ProductDefinitionTemplateNumber"); //$NON-NLS-1$
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_40);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_41);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_42);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_43);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_44);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_45);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_46);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_47);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_48);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_49);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_410);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_411);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_412);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_413);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_414);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_415);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_420);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_430);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_431);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_432);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_440);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_441);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_442);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_443);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_444);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_445);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_446);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_447);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_448);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_451);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_491);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_4254);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_41000);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_41001);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_41002);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_41100);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_41101);
		addEEnumLiteral(productDefinitionTemplateNumberEEnum, ProductDefinitionTemplateNumber.PRODUCT_DEFINITION_TEMPLATE_465535);

		// Create annotations
		// http://www.eclipse.org/emf/2002/GenModel
		createGenModelAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/GenModel</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createGenModelAnnotations() {
		String source = "http://www.eclipse.org/emf/2002/GenModel"; //$NON-NLS-1$		
		addAnnotation
		  (productDefinitionTemplate40EClass, 
		   source, 
		   new String[] {
			 "description_en", "analysis or forecast at a horizontal level or in a horizontal layer at a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_ParameterCategory(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter category", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter category (see Code table 4.1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_ParameterNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter number (see Code table 4.2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_TypeOfGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Type of generating process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of generating process (see Code table 4.3)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_BackgroundGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Background generating process identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Background generating process identifier (defined by originating centre)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_AnalysisOrForecastGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Analysis or forecast generating process identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Analysis or forecast generating process identifier (defined by originating centre)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_HoursOfObservationalDataCutOff(), 
		   source, 
		   new String[] {
			 "label_en", "Hours of observational data cut-off after reference time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hours of observational data cut-off after reference time (see Note)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_MinutesOfObservationalDataCutOff(), 
		   source, 
		   new String[] {
			 "label_en", "Minutes of observational data cut-off after reference time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minutes of observational data cut-off after reference time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_IndicatorOfUnitOfTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time range (see Code table 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_ForecastTime(), 
		   source, 
		   new String[] {
			 "label_en", "Forecast time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Forecast time in units defined by octet 18" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_TypeOfFirstFixedSurface(), 
		   source, 
		   new String[] {
			 "label_en", "Type of first fixed surface", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of first fixed surface (see Code table 4.5)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_ScaleFactorOfFirstFixedSurface(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of first fixed surface", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of first fixed surface" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_ScaledValueOfFirstFixedSurface(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of first fixed surface", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of first fixed surface" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_TypeOfSecondFixedSurface(), 
		   source, 
		   new String[] {
			 "label_en", "Type of second fixed surface", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of second fixed surface (see Code table 4.5)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_ScaleFactorOfSecondFixedSurface(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of second fixed surface", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of second fixed surface" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate40_ScaledValueOfSecondFixedSurface(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of second fixed surface", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of second fixed surface" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate41EClass, 
		   source, 
		   new String[] {
			 "description_en", "individual ensemble forecast, control and perturbed, at a\r\nhorizontal level or in a horizontal layer at a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41_TypeOfEnsembleForecast(), 
		   source, 
		   new String[] {
			 "label_en", "Type of ensemble forecast", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of ensemble forecast (see Code table 4.6)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41_PerturbationNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Perturbation number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Perturbation number" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41_NumberOfForecastsInEnsemble(), 
		   source, 
		   new String[] {
			 "label_en", "Number of forecasts in ensemble", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of forecasts in ensemble" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate42EClass, 
		   source, 
		   new String[] {
			 "description_en", "derived forecasts based on all ensemble members at a\r\nhorizontal level or in a horizontal layer at a point in\r\ntime", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate42_DerivedForecast(), 
		   source, 
		   new String[] {
			 "label_en", "Derived forecast", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Derived forecast (see Code table 4.7)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate42_NumberOfForecastsInEnsemble(), 
		   source, 
		   new String[] {
			 "label_en", "Number of forecasts in ensemble", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of forecasts in ensemble" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate43EClass, 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members over\r\na rectangular area at a horizontal level or in a horizontal layer at a\r\npoint in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_ClusterIdentifier(), 
		   source, 
		   new String[] {
			 "label_en", "Cluster identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Cluster identifier" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_NumberOfClusterHighResolution(), 
		   source, 
		   new String[] {
			 "label_en", "Number of cluster to which the high resolution control belongs", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of cluster to which the high resolution control belongs" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_NumberOfClusterLowResolution(), 
		   source, 
		   new String[] {
			 "label_en", "Number of cluster to which the low resolution control belongs", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of cluster to which the low resolution control belongs" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_TotalNumberOfClusters(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of clusters", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of clusters" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_ClusteringMethod(), 
		   source, 
		   new String[] {
			 "label_en", "Clustering method", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Clustering method (see Code table 4.8)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_NorthernLatitudeOfClusterDomain(), 
		   source, 
		   new String[] {
			 "label_en", "Northern latitude of cluster domain", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Northern latitude of cluster domain" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_SouthernLatitudeOfClusterDomain(), 
		   source, 
		   new String[] {
			 "label_en", "Southern latitude of cluster domain", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Southern latitude of cluster domain" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_EasternLatitudeOfClusterDomain(), 
		   source, 
		   new String[] {
			 "label_en", "Eastern latitude of cluster domain", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Eastern latitude of cluster domain" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_WesternLatitudeOfClusterDomain(), 
		   source, 
		   new String[] {
			 "label_en", "Western latitude of cluster domain", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Western latitude of cluster domain" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_NumberOfForecastsInTheCluster(), 
		   source, 
		   new String[] {
			 "label_en", "Nc", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of forecasts in the cluster" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_ScaleFactorOfStandardDeviationInTheCluster(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of standard deviation in the cluster", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of standard deviation in the cluster" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_ScaledValueOfStandardDeviationInTheCluster(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of standard deviation in the cluster", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of standard deviation in the cluster" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_ScaleFactorOfDistanceOfTheClusterFromEnsembleMean(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of distance of the cluster from ensemble mean", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of distance of the cluster from ensemble mean" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_ScaledValueOfDistanceOfTheClusterFromEnsembleMean(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of distance of the cluster from ensemble mean", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of distance of the cluster from ensemble mean" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate43_EnsembleForecastNumbersOffset(), 
		   source, 
		   new String[] {
			 "label_en", "List of Nc offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Offset of the list of Nc ensemble forecast numbers (Nc is given in octet 58)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate44EClass, 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members\r\nover a circular area at a horizontal level or in a horizontal layer\r\nat a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_ClusterIdentifier(), 
		   source, 
		   new String[] {
			 "label_en", "Cluster identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Cluster identifier" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_NumberOfClusterHighResolution(), 
		   source, 
		   new String[] {
			 "label_en", "Number of cluster to which the high resolution control belongs", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of cluster to which the high resolution control belongs" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_NumberOfClusterLowResolution(), 
		   source, 
		   new String[] {
			 "label_en", "Number of cluster to which the low resolution control belongs", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of cluster to which the low resolution control belongs" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_TotalNumberOfClusters(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of clusters", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of clusters" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_ClusteringMethod(), 
		   source, 
		   new String[] {
			 "label_en", "Clustering method", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Clustering method (see Code table 4.8)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_LatitudeOfCentralPointInClusterDomain(), 
		   source, 
		   new String[] {
			 "label_en", "Latitude of central point in cluster domain", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Latitude of central point in cluster domain" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_LongitudeOfCentralPointInClusterDomain(), 
		   source, 
		   new String[] {
			 "label_en", "Longitude of central point in cluster domain", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Longitude of central point in cluster domain" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_RadiusOfClusterDomain(), 
		   source, 
		   new String[] {
			 "label_en", "Radius of cluster domain", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Radius of cluster domain" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_NumberOfForecastsInTheCluster(), 
		   source, 
		   new String[] {
			 "label_en", "Nc", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of forecasts in the cluster" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_ScaleFactorOfStandardDeviationInTheCluster(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of standard deviation in the cluster", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of standard deviation in the cluster" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_ScaledValueOfStandardDeviationInTheCluster(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of standard deviation in the cluster", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of standard deviation in the cluster" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_ScaleFactorOfDistanceOfTheClusterFromEnsembleMean(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of distance of the cluster from ensemble mean", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of distance of the cluster from ensemble mean" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_ScaledValueOfDistanceOfTheClusterFromEnsembleMean(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of distance of the cluster from ensemble mean", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of distance of the cluster from ensemble mean" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate44_EnsembleForecastNumbersOffset(), 
		   source, 
		   new String[] {
			 "label_en", "List of Nc offset", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Offset of the list of Nc ensemble forecast numbers (Nc is given in octet 58)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate45EClass, 
		   source, 
		   new String[] {
			 "description_en", "Probability forecasts at a horizontal level or in a horizontal layer\r\nat a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate45_ForecastProbabilityNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Forecast probability number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Forecast probability number" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate45_ProbabilityType(), 
		   source, 
		   new String[] {
			 "label_en", "Probability type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Probability type (see Code table 4.9)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate45_ScaleFactorOfLowerLimit(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of lower limit", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of lower limit" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate45_ScaledValueOfLowerLimit(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of lower limit", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of lower limit" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate45_ScaleFactorOfUpperLimit(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of upper limit", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of upper limit" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate45_ScaledValueOfUpperLimit(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of upper limit", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of upper limit" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate46EClass, 
		   source, 
		   new String[] {
			 "description_en", "Percentile forecasts at a horizontal level or in a horizontal layer\r\nat a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate46_PercentileValue(), 
		   source, 
		   new String[] {
			 "label_en", "Percentile value", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Percentile value (from 100% to 0%)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate47EClass, 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast error at a horizontal level or in a horizontal\r\nlayer at a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate48EClass, 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation and/or extreme values or other\r\nstatistically processed values at a horizontal level or in a\r\nhorizontal layer in a continuous or non-continuous time interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "The reference and forecast times are successively set to their initial values plus or minus the increment, as defined by\r\nthe type of time increment (one of octets 48, 60, 72, ...). For all but the innermost (last) time range, the next inner range\r\nis then processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Seconds", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Seconds of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_NumberOfTimeRangeSpecifications(), 
		   source, 
		   new String[] {
			 "label_en", "n", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of time range specifications describing the time intervals used to calculate the\r\nstatistically processed field" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_OutermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_OutermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_OutermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_OutermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_AdditionalStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_AdditionalTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_AdditionalLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate48_AdditionalTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate49EClass, 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation and/or extreme values or other\r\nstatistically processed values at a horizontal level or in a\r\nhorizontal layer in a continuous or non-continuous time interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge.\r\nThe reference and forecast times are successively set to their initial values plus or minus the increment, as defined by the\r\ntype of time increment (one of octets 46, 58, 70, ...). For all but the innermost (last) time range, the next inner range is then\r\nprocessed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Seconds", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Seconds of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_NumberOfTimeRangeSpecifications(), 
		   source, 
		   new String[] {
			 "label_en", "n", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of time range specifications describing the time intervals used to calculate the\r\nstatistically processed field" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_OutermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_OutermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_OutermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_OutermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_InnermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_InnermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_InnermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_InnermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_InnermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_InnermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_AdditionalStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_AdditionalTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_AdditionalLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate49_AdditionalTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate410EClass, 
		   source, 
		   new String[] {
			 "description_en", "Percentile forecasts at a horizontal level or in a horizontal\r\nlayer in a continuous or non-continuous time interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by raingauge." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Seconds", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Seconds of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_NumberOfTimeRangeSpecifications(), 
		   source, 
		   new String[] {
			 "label_en", "n", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of time range specifications describing the time intervals used to calculate the\r\nstatistically processed field" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_OutermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_OutermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_OutermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_OutermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_AdditionalStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_AdditionalTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_AdditionalLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate410_AdditionalTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate411EClass, 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a\r\nhorizontal level or in a horizontal layer in a continuous or noncontinuous\r\ntime interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge.\r\nThe reference and forecast times are successively set to their initial values plus or minus the increment, as defined by\r\nthe type of time increment (one of octets 51, 63, 75, ...). For all but the innermost (last) time range, the next inner range\r\nis then processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Seconds", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Seconds of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_NumberOfTimeRangeSpecifications(), 
		   source, 
		   new String[] {
			 "label_en", "n", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of time range specifications describing the time intervals used to calculate the\r\nstatistically processed field" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_OutermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_OutermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_OutermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_OutermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_AdditionalStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_AdditionalTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_AdditionalLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate411_AdditionalTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate412EClass, 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on all ensemble members at a\r\nhorizontal level or in a horizontal layer in a continuous or noncontinuous\r\ntime interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a\r\nraingauge.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "The reference and forecast times are successively set to their initial values plus or minus the increment, as defined by\r\nthe type of time increment (one of octets 50, 62, 74, ...). For all but the innermost (last) time range, the next inner range\r\nis then processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Seconds", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Seconds of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_NumberOfTimeRangeSpecifications(), 
		   source, 
		   new String[] {
			 "label_en", "n", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of time range specifications describing the time intervals used to calculate the\r\nstatistically processed field" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_OutermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_OutermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_OutermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_OutermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_AdditionalStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_AdditionalTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_AdditionalLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate412_AdditionalTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate413EClass, 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members\r\nover a rectangular area at a horizontal level or in a horizontal\r\nlayer in a continuous or non-continuous time interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "The reference and forecast times are successively set to their initial values plus or minus the increment, as defined by\r\nthe type of time increment (one of octets 82, 94, 106,....). For all but the innermost (last) time range, the next inner range is\r\nthen processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Seconds", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Seconds of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_NumberOfTimeRangeSpecifications(), 
		   source, 
		   new String[] {
			 "label_en", "n", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of time range specifications describing the time intervals used to calculate the\r\nstatistically processed field" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_OutermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_OutermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_OutermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_OutermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_AdditionalStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_AdditionalTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_AdditionalLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate413_AdditionalTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate414EClass, 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members\r\nover a circular area at a horizontal level or in a horizontal layer\r\nin a continuous or non-continuous time interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "The reference and forecast times are successively set to their initial values plus or minus the increment, as defined by the\r\ntype of time increment (one of octets 78, 90, 112, ...). For all but the innermost (last) time range, the next inner range is\r\nthen processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_Year(), 
		   source, 
		   new String[] {
			 "label_en", "Year", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Year of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_Month(), 
		   source, 
		   new String[] {
			 "label_en", "Month", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Month of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_Day(), 
		   source, 
		   new String[] {
			 "label_en", "Day", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Day of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_Hour(), 
		   source, 
		   new String[] {
			 "label_en", "Hour", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hour of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_Minute(), 
		   source, 
		   new String[] {
			 "label_en", "Minute", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minute of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_Second(), 
		   source, 
		   new String[] {
			 "label_en", "Seconds", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Seconds of time of end of overall time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_NumberOfTimeRangeSpecifications(), 
		   source, 
		   new String[] {
			 "label_en", "n", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of time range specifications describing the time intervals used to calculate the\r\nstatistically processed field" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_OutermostStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_OutermostTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_OutermostIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_OutermostLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_OutermostIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_OutermostTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_AdditionalStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_AdditionalTypeOfTimeIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields used in the statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_AdditionalIndicatorOfUnitOfTimeStatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for time range over which statistical processing is done", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_AdditionalLengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_AdditionalIndicatorOfUnitOfTimeSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time for the increment between the successive fields used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate414_AdditionalTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields, in units defined by the previous octet", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Notes 3\r\nand 4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate415EClass, 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation, extreme values, or other\r\nstatistically processed values over a spatial area at a\r\nhorizontal level or in a horizontal layer at a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate415_StatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used within the spatial area defined by octet 36 (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate415_TypeOfSpatialProcessing(), 
		   source, 
		   new String[] {
			 "label_en", "Type of spatial processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of spatial processing used to arrive at given data value from the source data (see\r\nCode table 4.15)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate415_NumberOfDataPoints(), 
		   source, 
		   new String[] {
			 "label_en", "Number of data points", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of data points used in spatial processing defined in octet 36" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate420EClass, 
		   source, 
		   new String[] {
			 "description_en", "Radar product" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_ParameterCategory(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter category", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter category (see Code table 4.1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_ParameterNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter number (see Code table 4.2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_TypeOfGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Type of generating process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of generating process (see Code table 4.3)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_NumberOfRadarSites(), 
		   source, 
		   new String[] {
			 "label_en", "Number of radar sites used", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of radar sites used" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_UnitOfTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time range" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_SiteLatitude(), 
		   source, 
		   new String[] {
			 "label_en", "Site latitude", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Site latitude (in 10\u20136 degree)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_SiteLongitude(), 
		   source, 
		   new String[] {
			 "label_en", "Site longitude", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Site longitude (in 10\u20136 degree)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_SiteElevation(), 
		   source, 
		   new String[] {
			 "label_en", "Site elevation", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Site elevation (metres)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_AlphanumericSiteID(), 
		   source, 
		   new String[] {
			 "label_en", "Site ID (alphanumeric)", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Site ID (alphanumeric)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_NumericSiteID(), 
		   source, 
		   new String[] {
			 "label_en", "Site ID (numeric)", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Site ID (numeric)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_OperatingMode(), 
		   source, 
		   new String[] {
			 "label_en", "Operating mode", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Operating mode (see Code table 4.12)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_ReflectivityCalibrationConstant(), 
		   source, 
		   new String[] {
			 "label_en", "Reflectivity calibration constant", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Reflectivity calibration constant (tenths of dB)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_QualityControlIndicator(), 
		   source, 
		   new String[] {
			 "label_en", "Quality control indicator", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Quality control indicator (see Code table 4.13)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_ClutterFilterIndicator(), 
		   source, 
		   new String[] {
			 "label_en", "Clutter filter indicator", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Clutter filter indicator (see Code table 4.14)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_ConstantAntennaElevationAngle(), 
		   source, 
		   new String[] {
			 "label_en", "Constant antenna elevation angle", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Constant antenna elevation angle (tenths of degree true)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_AccumulationInterval(), 
		   source, 
		   new String[] {
			 "label_en", "Accumulation interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Accumulation interval (minutes)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_ReferenceReflectivity(), 
		   source, 
		   new String[] {
			 "label_en", "Reference reflectivity", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Reference reflectivity for echo top (dB)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_RangeBinSpacing(), 
		   source, 
		   new String[] {
			 "label_en", "Range bin spacing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Range bin spacing (metres)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate420_RadialAngularSpacing(), 
		   source, 
		   new String[] {
			 "label_en", "Radial angular spacing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Radial angular spacing (tenths of degree true)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate430EClass, 
		   source, 
		   new String[] {
			 "description_en", "Satellite product", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "For \u201csatellite series of band nb\u201d, \u201csatellite numbers of band nb\u201d and \u201cinstrument types of band nb\u201d, it is recommended to\r\nencode the values as per BUFR Code tables 0 02 020, 0 01 007 (Common Code table C\u20135) and 0 02 019 (Common\r\nCode table C\u20138), respectively." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate430_ParameterCategory(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter category", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter category (see Code table 4.1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate430_ParameterNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter number (see Code table 4.2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate430_TypeOfGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Type of generating process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of generating process (see Code table 4.3)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate430_ObservationGeneratingProcessIdentifier(), 
		   source, 
		   new String[] {
			 "label_en", "Observation generating process identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Observation generating process identifier (defined by originating centres)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate430_NumberOfContributingSpectralBands(), 
		   source, 
		   new String[] {
			 "label_en", "NB", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of contributing spectral bands" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate430_ContributingBandOffsets(), 
		   source, 
		   new String[] {
			 "label_en", "Satellite series of band nb", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Satellite series of band nb (code table defined by originating/generating centre)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate431EClass, 
		   source, 
		   new String[] {
			 "description_en", "Satellite product", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "For \u201csatellite series of band nb\u201d, \u201csatellite numbers of band nb\u201d and \u201cinstrument types of band nb\u201d, it is recommended to\r\nencode the values as per BUFR Code tables 0 02 020, 0 01 007 (Common Code table C\u20135) and 0 02 019 (Common\r\nCode table C\u20138), respectively." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate432EClass, 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer\r\nat a point in time for simulated (synthetic) satellite data", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "For \"satellite series of band nb\", \"satellite numbers of band nb\" and \"instrument types of band nb\", it is\r\nrecommended to encode the values as per BUFR Code tables 0 02 020, 0 01 007 (Common Code table C\u20135) and 0\r\n02 019 (Common Code table C\u20138), respectively.", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
			 "note_2_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate432_AnalysisOrForecastGeneratingProcessIdentifier(), 
		   source, 
		   new String[] {
			 "label_en", "Analysis or forecast generating process identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Analysis or forecast generating process identifier" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate432_HoursOfObservationalData(), 
		   source, 
		   new String[] {
			 "label_en", "Hours of observational data cut-off after reference time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hours of observational data cut-off after reference time (see Note 2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate432_MinutesOfObservationalData(), 
		   source, 
		   new String[] {
			 "label_en", "Minutes of observational data cut-off after reference time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minutes of observational data cut-off after reference time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate432_IndicatorOfUnitOfTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time range (see Code table 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate432_ForecastTime(), 
		   source, 
		   new String[] {
			 "label_en", "Forecast time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Forecast time in units defined by octet 18" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate440EClass, 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal\r\nlayer at a point in time for atmospheric chemical\r\nconstituents", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate440_AtmosphericChemicalConstituentType(), 
		   source, 
		   new String[] {
			 "label_en", "Atmospheric chemical constituent type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Atmospheric chemical constituent type (see Code table 4.230)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate441EClass, 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a\r\nhorizontal level or in a horizontal layer at a point in time for\r\natmospheric chemical constituents", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate441_AtmosphericChemicalConstituentType(), 
		   source, 
		   new String[] {
			 "label_en", "Atmospheric chemical constituent type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Atmospheric chemical constituent type (see Code table 4.230)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate442EClass, 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation, and/or extreme values or other statistically\r\nprocessed values at a horizontal level or in a horizontal\r\nlayer in a continuous or non-continuous time interval for\r\natmospheric chemical constituents", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "The reference and forecast times are successively set to their initial values plus or minus the increment, as defined by\r\nthe type of time increment (one of octets 50, 62, 74, \u2026). For all but the innermost (last) time range, the next inner range\r\nis then processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate442_AtmosphericChemicalConstituentType(), 
		   source, 
		   new String[] {
			 "label_en", "Atmospheric chemical constituent type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Atmospheric chemical constituent type (see Code table 4.230)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate443EClass, 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a\r\nhorizontal level or in a horizontal layer in a continuous or\r\nnon-continuous time interval for atmospheric chemical\r\nconstituents", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "The reference and forecast times are successively set to their initial values plus or minus the increment, as defined by\r\nthe type of time increment (one of octets 53, 65, 77, \u2026). For all but the innermost (last) time range, the next inner range\r\nis then processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate443_AtmosphericChemicalConstituentType(), 
		   source, 
		   new String[] {
			 "label_en", "Atmospheric chemical constituent type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Atmospheric chemical constituent type (see Code table 4.230)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate444EClass, 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer\r\nat a point in time for aerosol", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate444_AerosolType(), 
		   source, 
		   new String[] {
			 "label_en", "Aerosol type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Aerosol type (see Code table 4.233)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate444_TypeOfIntervalForFirstAndSecondSizes(), 
		   source, 
		   new String[] {
			 "label_en", "Type of interval for first and second sizes", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of interval for first and second sizes (see Code table 4.91)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate444_ScaleFactorOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of first size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of first size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate444_ScaledValueOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of first size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of first size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate444_ScaleFactorOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of second size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of second size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate444_ScaledValueOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of second size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of second size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate445EClass, 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a\r\nhorizontal level or in a horizontal layer at a point in time for\r\naerosol", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate445_AerosolType(), 
		   source, 
		   new String[] {
			 "label_en", "Aerosol type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Aerosol type (see Code table 4.233)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate445_TypeOfIntervalForFirstAndSecondSizes(), 
		   source, 
		   new String[] {
			 "label_en", "Type of interval for first and second sizes", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of interval for first and second sizes (see Code table 4.91)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate445_ScaleFactorOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of first size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of first size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate445_ScaledValueOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of first size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of first size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate445_ScaleFactorOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of second size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of second size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate445_ScaledValueOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of second size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of second size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate446EClass, 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation, and/or extreme values or other\r\nstatistically processed values at a horizontal level or in a\r\nhorizontal layer in a continuous or non-continuous time\r\ninterval for aerosol", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate446_AerosolType(), 
		   source, 
		   new String[] {
			 "label_en", "Aerosol type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Aerosol type (see Code table 4.233)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate446_TypeOfIntervalForFirstAndSecondSizes(), 
		   source, 
		   new String[] {
			 "label_en", "Type of interval for first and second sizes", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of interval for first and second sizes (see Code table 4.91)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate446_ScaleFactorOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of first size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of first size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate446_ScaledValueOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of first size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of first size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate446_ScaleFactorOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of second size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of second size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate446_ScaledValueOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of second size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of second size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate447EClass, 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a\r\nhorizontal level or in a horizontal layer in a continuous or\r\nnon-continuous time interval for aerosol", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process,\r\nnot the processing of a number of discrete samples. Examples of such continuous processes are the temperatures\r\nmeasured by analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a\r\nraingauge. The reference and forecast times are successively set to their initial values plus or minus the increment,\r\nas defined by the type of time increment (one of octets 63, 75, ...). For all but the innermost (last) time range, the next\r\ninner range is then processed using these reference and forecast times as the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate447_AerosolType(), 
		   source, 
		   new String[] {
			 "label_en", "Aerosol type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Aerosol type (see Code table 4.233)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate447_TypeOfIntervalForFirstAndSecondSizes(), 
		   source, 
		   new String[] {
			 "label_en", "Type of interval for first and second sizes", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of interval for first and second sizes (see Code table 4.91)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate447_ScaleFactorOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of first size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of first size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate447_ScaledValueOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of first size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of first size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate447_ScaleFactorOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of second size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of second size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate447_ScaledValueOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of second size in metres", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of second size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate448EClass, 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer at\r\na point in time for optical properties of aerosol", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_AerosolType(), 
		   source, 
		   new String[] {
			 "label_en", "Aerosol type", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Aerosol type (see Common Code table C\u201314)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_TypeOfIntervalForFirstAndSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Type of interval for first and second size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of interval for first and second size (see Code table 4.91)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaleFactorOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of first size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of first size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaledValueOfFirstSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of first size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of first size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaleFactorOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of second size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of second size" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaledValueOfSecondSize(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of second size", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of second size in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_TypeOfIntervalForFirstAndSecondWavelength(), 
		   source, 
		   new String[] {
			 "label_en", "Type of interval for first and second wavelength", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of interval for first and second wavelength (see Code table 4.91)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaleFactorOfFirstWavelength(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of first wavelength", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of first wavelength" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaledValueOfFirstWavelength(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of first wavelength", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of first wavelength in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaleFactorOfSecondWavelength(), 
		   source, 
		   new String[] {
			 "label_en", "Scale factor of second wavelength", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scale factor of second wavelength" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate448_ScaledValueOfSecondWavelength(), 
		   source, 
		   new String[] {
			 "label_en", "Scaled value of second wavelength", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Scaled value of second wavelength in metres" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate451EClass, 
		   source, 
		   new String[] {
			 "description_en", "Categorical forecasts at a horizontal level or in a horizontal\r\nlayer at a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate451_NumberOfCategories(), 
		   source, 
		   new String[] {
			 "label_en", "NC", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of categories" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate491EClass, 
		   source, 
		   new String[] {
			 "description_en", "Categorical forecasts at a horizontal level or in a horizontal\r\nlayer in a continuous or non-continuous time interval", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "Hours greater than 65534 will be coded as 65534.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "The reference time in section 1 and the forecast time together define the beginning of the overall time interval.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process,\r\nnot the processing of a number of discrete samples. Examples of such continuous processes are the temperatures\r\nmeasured by analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a\r\nraingauge. The reference and forecast times are successively set to their initial values plus or minus the increment,\r\nas defined by the type of time increment (one of octets (60+12(NC \u20131)), (73+12(NC \u20131)), (85+12(NC \u20131)), ...). For all\r\nbut the innermost (last) time range, the next inner range is then processed using these reference and forecast times\r\nas the initial reference and forecast times." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate4254EClass, 
		   source, 
		   new String[] {
			 "description_en", "CCITT IA5 character string" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate4254_ParameterCategory(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter category", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter category (see Code table 4.1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate4254_ParameterNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter number (see Code table 4.2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate4254_NumberOfCharacters(), 
		   source, 
		   new String[] {
			 "label_en", "Number of characters", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of characters" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate41000EClass, 
		   source, 
		   new String[] {
			 "description_en", "Cross-section of analysis and forecast at a point in time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "This template is simply experimental, was not validated at the time of publication and should be used only\r\nfor bilateral previously agreed tests.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_ParameterCategory(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter category", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter category (see Code table 4.1)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_ParameterNumber(), 
		   source, 
		   new String[] {
			 "label_en", "Parameter number", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Parameter number (see Code table 4.2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_TypeOfGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Type of generating process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of generating process (see Code table 4.3)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_BackgroundGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Background generating process identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Background generating process identifier (defined by originating centre)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_AnalysisOrForecastGeneratingProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Analysis or forecast generating process identifier", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Analysis or forecast generating process identifier (defined by originating centre)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_HoursOfObservationalDataCutOff(), 
		   source, 
		   new String[] {
			 "label_en", "Hours of observational data cut-off after reference time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Hours of observational data cut-off after reference time (see Note)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_MinutesOfObservationalDataCutOff(), 
		   source, 
		   new String[] {
			 "label_en", "Minutes of observational data cut-off after reference time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Minutes of observational data cut-off after reference time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_IndicatorOfUnitOfTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time range (see Code table 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41000_ForecastTime(), 
		   source, 
		   new String[] {
			 "label_en", "Forecast time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Forecast time in units defined by octet 18" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate41001EClass, 
		   source, 
		   new String[] {
			 "description_en", "Cross-section of averaged or otherwise statistically\r\nprocessed analysis or forecast over a range of time", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "This template is simply experimental, was not validated at the time of publication and should be used only\r\nfor bilateral previously agreed tests.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "Hours greater than 65534 will be coded as 65534.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41001_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in the statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in the statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41001_StatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41001_TypeOfTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41001_IndicatorOfUnitOfTimeForTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41001_LengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41001_IndicatorOfUnitOfTimeForIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41001_TimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Note 2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate41002EClass, 
		   source, 
		   new String[] {
			 "description_en", "Cross-section of analysis and forecast, averaged or otherwise\r\nstatistically processed over latitude or longitude", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "This template is simply experimental, was not validated at the time of publication and should be used only\r\nfor bilateral previously agreed tests.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41002_HorizontalDimensionProcessed(), 
		   source, 
		   new String[] {
			 "label_en", "Horizontal dimension processed", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Horizontal dimension processed (see Code table 4.220)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41002_TreatmentOfMissingData(), 
		   source, 
		   new String[] {
			 "label_en", "Treatment of missing data", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Treatment of missing data (e.g. below ground) (see Code table 4.221)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41002_TypeOfStatisticalProcessing(), 
		   source, 
		   new String[] {
			 "label_en", "Type of statistical processing", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of statistical processing (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41002_StartOfRange(), 
		   source, 
		   new String[] {
			 "label_en", "Start of range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Start of range" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41002_EndOfRange(), 
		   source, 
		   new String[] {
			 "label_en", "End of range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "End of range" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41002_NumberOfValues(), 
		   source, 
		   new String[] {
			 "label_en", "Number of values", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Number of values" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate41100EClass, 
		   source, 
		   new String[] {
			 "description_en", "Hovm\u00f6ller-type grid with no averaging or other statistical\r\nprocessing", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "This template is simply experimental, was not validated at the time of publication and should be used only\r\nfor bilateral previously agreed tests.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "Hours greater than 65534 will be coded as 65534." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplate41101EClass, 
		   source, 
		   new String[] {
			 "description_en", "Hovm\u00f6ller-type grid with averaging or other statistical\r\nprocessing", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_1_en", "This template is simply experimental, was not validated at the time of publication and should be used only\r\nfor bilateral previously agreed tests. (Octets 35\u201350 are very similar to octets 43\u201358 of product definition\r\ntemplate 4.8, but the meaning of some fields differs slightly.)", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_2_en", "Hours greater than 65534 will be coded as 65534.", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_3_en", "Reference = reference time (section 1) + forecast range (PDT) + offset and increments from reference time (GDT).", //$NON-NLS-1$ //$NON-NLS-2$
			 "note_4_en", "An increment of zero means that the statistical processing is the result of a continuous (or near continuous) process, not\r\nthe processing of a number of discrete samples. Examples of such continuous processes are the temperatures measured\r\nby analogue maximum and minimum thermometers or thermographs, and the rainfall measured by a raingauge." //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41101_TotalNumberOfDataValuesMissing(), 
		   source, 
		   new String[] {
			 "label_en", "Total number of data values missing in the statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Total number of data values missing in the statistical process" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41101_StatisticalProcess(), 
		   source, 
		   new String[] {
			 "label_en", "Statistical process", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Statistical process used to calculate the processed field from the field at each time increment\r\nduring the time range (see Code table 4.10)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41101_TypeOfTimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Type of time increment between successive fields", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Type of time increment between successive fields used in the statistical processing (see\r\nCode table 4.11)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41101_IndicatorOfUnitOfTimeForTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for time range over which statistical processing is done (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41101_LengthOfTheTimeRange(), 
		   source, 
		   new String[] {
			 "label_en", "Length of the time range", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Length of the time range over which statistical processing is done, in units defined by the\r\nprevious octet" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41101_IndicatorOfUnitOfTimeForIncrement(), 
		   source, 
		   new String[] {
			 "label_en", "Indicator of unit of time", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Indicator of unit of time for the increment between the successive fields used (see Code\r\ntable 4.4)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (getProductDefinitionTemplate41101_TimeIncrementBetweenSuccessiveFields(), 
		   source, 
		   new String[] {
			 "label_en", "Time increment between successive fields", //$NON-NLS-1$ //$NON-NLS-2$
			 "description_en", "Time increment between successive fields, in units defined by the previous octet (see Note 2)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(0), 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(1), 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a horizontal level or in a\r\nhorizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(2), 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on all ensemble members at a horizontal level or in a\r\nhorizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(3), 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members over a rectangular area at a\r\nhorizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(4), 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members over a circular area at a\r\nhorizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(5), 
		   source, 
		   new String[] {
			 "description_en", "Probability forecasts at a horizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(6), 
		   source, 
		   new String[] {
			 "description_en", "Percentile forecasts at a horizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(7), 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast error at a horizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(8), 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation, extreme values or other statistically processed values at a\r\nhorizontal level or in a horizontal layer in a continuous or non-continuous time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(9), 
		   source, 
		   new String[] {
			 "description_en", "Probability forecasts at a horizontal level or in a horizontal layer in a continuous or\r\nnon-continuous time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(10), 
		   source, 
		   new String[] {
			 "description_en", "Percentile forecasts at a horizontal level or in a horizontal layer in a continuous or noncontinuous\r\ntime interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(11), 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a horizontal level or in a\r\nhorizontal layer, in a continuous or non-continuous interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(12), 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on all ensemble members at a horizontal level or in a horizontal\r\nlayer, in a continuous or non-continuous interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(13), 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members over a rectangular area, at\r\na horizontal level or in a horizontal layer, in a continuous or non-continuous interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(14), 
		   source, 
		   new String[] {
			 "description_en", "Derived forecasts based on a cluster of ensemble members over a circular area, at a\r\nhorizontal level or in a horizontal layer, in a continuous or non-continuous interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(15), 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation, extreme values, or other statistically processed values over a\r\nspatial area at a horizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(16), 
		   source, 
		   new String[] {
			 "description_en", "Radar product" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(17), 
		   source, 
		   new String[] {
			 "description_en", "Satellite product (deprecated)" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(18), 
		   source, 
		   new String[] {
			 "description_en", "Satellite product" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(19), 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for\r\nsimulated (synthetic) satellite data" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(20), 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for\r\natmospheric chemical constituents" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(21), 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a horizontal level or in a\r\nhorizontal layer at a point in time for atmospheric chemical constituents" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(22), 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation and/or extreme values or other statistically processed values at\r\na horizontal level or in a horizontal layer in a continuous or non-continuous time interval\r\nfor atmospheric chemical constituents" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(23), 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a horizontal level or in a\r\nhorizontal layer in a continuous or non-continuous time interval for atmospheric\r\nchemical constituents" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(24), 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for\r\naerosol" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(25), 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a horizontal level or in\r\na horizontal layer at a point in time for aerosol" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(26), 
		   source, 
		   new String[] {
			 "description_en", "Average, accumulation, and/or extreme values or other statistically processed values\r\nat a horizontal level or in a horizontal layer in a continuous or non-continuous time\r\ninterval for aerosol" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(27), 
		   source, 
		   new String[] {
			 "description_en", "Individual ensemble forecast, control and perturbed, at a horizontal level or in\r\na horizontal layer in a continuous or non continuous time interval for aerosol" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(28), 
		   source, 
		   new String[] {
			 "description_en", "Analysis or forecast at a horizontal level or in a horizontal layer at a point in time for\r\noptical properties of aerosol" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(29), 
		   source, 
		   new String[] {
			 "description_en", "Categorical forecasts at a horizontal level or in a horizontal layer at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(30), 
		   source, 
		   new String[] {
			 "description_en", "Categorical forecasts at a horizontal level or in a horizontal layer in a continuous or\r\nnon-continuous time interval" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(31), 
		   source, 
		   new String[] {
			 "description_en", "CCITT IA5 character string" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(32), 
		   source, 
		   new String[] {
			 "description_en", "Cross-section of analysis and forecast at a point in time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(33), 
		   source, 
		   new String[] {
			 "description_en", "Cross-section of averaged or otherwise statistically processed analysis or forecast over a\r\nrange of time" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(34), 
		   source, 
		   new String[] {
			 "description_en", "Cross-section of analysis and forecast, averaged or otherwise statistically processed over\r\nlatitude or longitude" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(35), 
		   source, 
		   new String[] {
			 "description_en", "Hovm\u00f6ller-type grid with no averaging or other statistical processing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(36), 
		   source, 
		   new String[] {
			 "description_en", "Hovm\u00f6ller-type grid with averaging or other statistical processing" //$NON-NLS-1$ //$NON-NLS-2$
		   });		
		addAnnotation
		  (productDefinitionTemplateNumberEEnum.getELiterals().get(37), 
		   source, 
		   new String[] {
			 "description_en", "Missing" //$NON-NLS-1$ //$NON-NLS-2$
		   });
	}

} //ProductsPackageImpl
